一、selenium grid概念
Selenium Grid是Selenium套件的一部分,它专门用于在不同的浏览器、操作系统和机器上并行运行多个测试。
Selenium Grid可以同时在不同机器上测试不同浏览器,包含一个hub和多个node。node会发送配置信息到hub,hub记录并跟踪每一个node的配置信息,同时hub会接受到即将被执行的测试用例及其相关信息,并通过这些信息自动选择可用的且符合浏览器与平台搭配要求的node,node被选中后,测试用例所调用的selenium命令就会被发送到hub,hub再将这些命令发送到指定给该测试用例的node,之后由node执行测试。
二、环境准备
java安装包、python安装包、selenium安装、chrome浏览器及浏览器驱动
selenium-server-standalone-v3.0.1.jar
三、开始部署
java和python环境变量
把下载好的Chromedriver.exe 放在python根目录
3.1 启动一个Hub
java -jar selenium-server-standalone-2.53.1.jar
-role hub
-port 4444(选取一个没有被占用的端口,默认4444)
3.2 启动一个Node
java -D webdriver.gecko.driver="C:\geckodriver.exe"
-jar selenium-server-standalone-2.53.1.jar
-role node
-hub http://192.168.1.3:4444/grid/register
-port 5566
上面那个命令参数的含义如下:
-D 指调用的驱动指定的路径。
-jar 指需要使用的Jar包
-role 指此台机器的角色,是Hub还是Node
-hub 指明Hub机器的地址
-port 指明通信的端口号,可以选择您想要的任何免费的端口号。
3.3 指定运行
如果你想在不同的系统和浏览器上启动的话,可以更改DesiredCapabilities 的设置,比如:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
#指定运行主机与端口号
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
capabilities = {
"browserName": "chrome", # 浏览器名称 'chrome','internet explorer','firefox'
"version": "", # 操作系统版本
"platform": "ANY", # 平台,这里可以是windows、linux、andriod等等
"javascriptEnabled": True, # 是否启用js
}
'指定node运行或交由hub自行分配'
driver = webdriver.Remote(
command_executor = "http://node_ip:5555/wd/hub", <'可以是hub或node的IP'>
desired_capabilities = capabilities,
options = chrome_options
)
当然前提是你执行的机器上所有浏览器的驱动都安装到位且可以执行Selenium的自动化