Selenium
简介:
- 用于web浏览器测试的工具;
- 支持的浏览器包括IE,Firefox,Safari,Chrome,Edge等;
- 使用简单,可使用Java,Python等多种语言编写用例脚本;
- 主要由三个工具构成:WebDriver,IDE,Grid。
架构图
环境配置
- 准备好Python或Java环境;
- 准备好selenium依赖;
- driver的下载与配置(Mac与Windows不同);
- 在代码中import对应的依赖。
安装(针对Python)
pip install selenium
Driver的下载与配置
官方链接:
https://www.selenium.dev/documentation/en/webdriver/driver_requirements/
配置:
- 配置 driver 的环境变量
- 重启命令行工具,验证是否配置成功
20231203最新地址:Chrome for Testing availability
chromedriver的下载与配置
淘宝镜像: CNPM Binaries Mirror
确定与浏览器匹配的driver版本,根据使用的操作系统下载对应的Chromedriver。
Windows详细配置步骤: Selenium环境安装配置
Windows验证chromedriver配置是否成功:
- 重启命令行,输入:chromedriver --version
- 出现chromedriver版本信息,则配置成功:
运行实例:
实例代码:
from selenium import webdriver
import time
# 打开浏览器
def open_browers():
driver = webdriver.Chrome()
driver.get("https://ceshiren.com/t/topic/24679")
time.sleep(2)
# 刷新浏览器
driver.refresh()
# 通过get跳转到baidu
driver.get("https://www.baidu.com/")
# 退回操作:返回百度之前的页面
driver.back()
# 最大化
driver.maximize_window()
# 最小化
driver.minimize_window()
#关闭窗口
driver.quit()
if __name__ == '__main__':
open_browers()
geckodriver的下载与配置
淘宝镜像: CNPM Binaries Mirror
没有chromedriver类似的对应关系,默认下载最新的driver版本;根据使用的操作系统下载相应的geckodriver。
Windows详细配置步骤: 与谷歌浏览器相同。
Windows验证geckodriver配置是否成功: 输入geckodriver --version
运行实例:
实例代码:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://ceshiren.com/")
driver.quit()
SeleniumIDE的下载安装
Chrome插件:https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd
Firefox插件:Selenium IDE – Get this Extension for Firefox (en-US)
github release:https://github.com/SeleniumHQ/selenium-ide/releases
其它版本:Selenium IDE version history - 1 version – Add-ons for Firefox (en-GB)
注意:Chrome插件在国内无法下载(需要翻墙或者代理),Firefox可以直接下载。
SeleniumIDE的启动
- 安装完成后,通过在浏览器的菜单栏中点击它的图标来启动它;
- 如果没看到图标,首先确保是否安装了Selenium IDE扩展插件;
- 通过以下链接访问所有插件:
- Chrome: chrome://extensions
- Firefox: about:addons
SeleniumIDE的常用功能
①新建、保存、打开
②开始和停止录制
③运行8中的所有的实例
④运行单个实例
⑤调试模式
⑥调整案例的运行速度
⑦要录制的网址
⑧实例列表
⑨动作、目标、值
⑩对单条命令的解释
⑪运行日志
录制实例:
导出代码:
# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestDefaultSuite():
def setup_method(self, method):
self.driver = webdriver.Chrome()
self.vars = {}
def teardown_method(self, method):
self.driver.quit()
def test_baidu(self):
self.driver.get("https://www.baidu.com/")
self.driver.set_window_size(958, 680)
self.driver.find_element(By.ID, "kw").click()
self.driver.find_element(By.ID, "kw").click()
self.driver.find_element(By.ID, "kw").send_keys("python")
self.driver.find_element(By.CSS_SELECTOR, ".bdsug-s").click()
element = self.driver.find_element(By.ID, "su")
actions = ActionChains(self.driver)
actions.move_to_element(element).perform()
self.driver.find_element(By.ID, "su").click()
self.driver.find_element(By.ID, "su").click()
element = self.driver.find_element(By.CSS_SELECTOR, "body")
actions = ActionChains(self.driver)
actions.move_to_element(element, 0, 0).perform()