一、Option概述
-
是一个配置浏览器启动的选项类,用于自定义和配置Driver会话。
-
常见使用场景:
- 设置无头模式:不会显示调用浏览器,避免人为干扰的问题;
- 设置调试模式:调试自动化测试代码(浏览器复用)。
-
参考:https://sites.google.com/a/chromium.org/chromedriver/capabilities
二、Option添加启动配置(arguments)
- 无头模式:
--headless
- 窗体最大化:
start-maximized
- 指定浏览器分辨率:
window-size=1920*3000
from selenium import webdriver
from selenium.webdriver.common.by import By
def test_chrome_pref():
options = webdriver.ChromeOptions()
# 无头模式
options.add_argument('--headless')
# 窗体最大化
options.add_argument('start-maximized')
# 指定浏览器分辨率
options.add_argument('window-size=1920x3000')
driver = webdriver.Chrome(chrome_options=options)
# 打开测试人页面
driver.get("https://ceshiren.com/")
# 点击登录
login_button_text = driver.find_element(By.CSS_SELECTOR, ".login-button").text
print(login_button_text)
driver.quit()
三、Capability概述
-
Capability是WebDriver支持的标准命令之外的扩展命令(配置信息);
-
配置Web驱动的属性,如浏览器名称、浏览器平台等;
-
结合Selenium Grid完成分布式、兼容性等测试;
-
官网地址: https://www.selenium.dev/zh-cn/documentation/webdriver/capabilities/shared/
四、Capability配置
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
def test_ceshiren():
# 切换成 windows 就会报错
capabilities = {"browserName":"chrome","platformName":"mac"}
# 通过 desired_capabilities 添加配置信息
driver = webdriver.Chrome(desired_capabilities=capabilities)
driver.implicitly_wait(5)
driver.get("https://ceshiren.com/")
# 输入框输入搜索内容[霍格沃兹测试学院]
text = driver.find_element(By.CSS_SELECTOR, ".login-button").text
# 点击搜索按钮
print(text)
time.sleep(30)
driver.quit()
五、Selenium Grid分布式
- Selenium Grid允许我们在多台机器上并行运行测试,并集中管理不同的浏览器版本和浏览器配置(而不是在每个单独的测试中);
- 官网地址:Grid | Selenium
六、演示环境
学院搭建的演示环境:Selenium Grid
(搭建教程会在 docker 章节讲解)
-
- 保证本地可以正常调通
-
- 实例化
Remote()
类并添加相应的配置
- 远程地址
- 设备配置
- 实例化
七、分布式运行
def test_ceshiren2():
hogwarts_grid_url = "https://selenium-node.hogwarts.ceshiren.com/wd/hub"
capabilities = {"browserName":"chrome","browserVersion":"101.0"}
# 配置信息
# 实例化Remote,获取可以远程控制的driver实例对象
# 通过 command_executor 配置selenium hub地址
# 通过 desired_capabilities 添加配置信息
driver = webdriver.Remote(
command_executor=hogwarts_grid_url,
desired_capabilities=capabilities)
driver.implicitly_wait(5)
driver.get("https://ceshiren.com/")
# 输入框输入搜索内容[霍格沃兹测试学院]
text = driver.find_element(By.CSS_SELECTOR, ".login-button").text
# 点击搜索按钮
print(text)
time.sleep(3)
driver.quit()