一、简介
- Selenium Grid是Selenium的三大组件( Selenium Webdriver, Selenium IDE )之一,作用是分布式执行测试;
- 它的分布式分布式结构:由一个hub节点和若干个node代理节点组成,即是所谓的master-slave(hub-node)模式。
- 其中,Hub 用来管理 Node 代理节点的注册、状态信息,接受客户端代码的调用,将命令分发给 Node 来执行。
二、环境部署
下载安装 Selenium Server 的 Jar 文件:selenium-server-standalone.jar
下载地址:http://selenium-release.storage.googleapis.com/index.html
2.1 启动hub
java -jar selenium-server-standalone.jar -role hub -maxSession 10 -port 4444
2.1.1参数说明
-
-role hub
表示启动运行hub; -
-port
是设置端口号,hub的默认端口也是4444 -
-maxSession
:最大会话请求,这个参数主要要用并发执行测试用例,默认是1,建议设置10及以上。
2.1.2 启动日志
$ java -jar selenium-server-standalone.jar -role hub -maxSession 10 -port 4444
23:25:09.606 INFO [GridLauncherV3.parse] - Selenium server version: 4.0.0-alpha-1, revision: d1d3728cae
23:25:09.698 INFO [GridLauncherV3.lambda$buildLaunchers$5] - Launching Selenium Grid hub on port 4444
2020-09-24 23:25:10.087:INFO::main: Logging initialized @739ms to org.seleniumhq.jetty9.util.log.StdErrLog
23:25:10.250 INFO [Hub.start] - Selenium Grid hub is up and running
23:25:10.250 INFO [Hub.start] - Nodes should register to http://192.168.31.53:4444/grid/register/
23:25:10.251 INFO [Hub.start] - Clients should connect to http://192.168.31.53:4444/wd/hub
启动成功后,浏览器打开地址:`http://localhost:4444/grid/console`
2.2 启动node
node节点可以与hub在同一台机器上运行,也可以在不同的机器上,需要注意的是,如果 Node 代理节点在其他机器,需要在对应 PC 上配置 JDK 环境,运行 Selenium Server 及浏览器驱动
java -jar selenium-server-standalone.jar -role node -port 6666 -hub http://127.0.0.1:4444/grid/register -maxSession 2 -browser browserName=chrome,seleniumProtocol=WebDriver,maxInstances=2,platform=MAC
-Dwebdriver.chrome.driver=chromedriver.exe
2.2.1 参数说明
-
-role node
:表示启动的是node节点 -
-port 5555
:指定node节点端口,node 的端口号是 5555 -
-hub http://127.0.0.1:4444/grid/register
:表示刚刚hub机地址 -
-maxSession 5
:node节点最大会话请求 -
-browser browserName=firefox,seleniumProtocol=WebDriver,maxInstances=5,platform=WINDOWS,version=45.0.2
浏览器参数-
browserName
:浏览器名字 [chrome、firefox、ie] -
seleniumProtocol
:协议 -
maxInstances
:最大浏览器协议数量,各node累计总数不能超过hub设置的maxSession
数 -
platform
:操作系统 -
version
:浏览器版本
-
2.2.2启动日志
$java -jar selenium-server-standalone.jar -role node -port 6666 -hub http://127.0.0.1:4444/grid/register
23:39:59.395 INFO [GridLauncherV3.parse] - Selenium server version: 4.0.0-alpha-1, revision: d1d3728cae
23:39:59.474 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Launching a Selenium Grid node on port 6666
23:39:59.705 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
23:39:59.773 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 6666
23:39:59.773 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Selenium Grid node is up and ready to register to the hub
23:39:59.810 INFO [SelfRegisteringRemote$1.run] - Starting auto registration thread. Will try to register every 5000 ms.
23:40:00.094 INFO [SelfRegisteringRemote.registerToHub] - Registering the node to the hub: http://127.0.0.1:4444/grid/register
23:40:00.144 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use
三、测试
from time import sleep
from selenium.webdriver import Remote,DesiredCapabilities
# 指定Hub主机及浏览器驱动
driver = Remote(
command_executor='http://192.168.183.1:4444/wd/hub',
desired_capabilities=desired_capabilities=DesiredCapabilities.CHROME.copy())
driver.get('http://google.com')
sleep(10)
driver.quit()
运行上面的测试脚本,Hub 主节点会自动分配到满足条件的 Node 节点去运行
四、docker部署
4.1拉取镜像
使用 docker pull
命令下载下面 3 个镜像到本地:
1、selenium/hub:主节点镜像 hub
2、selenium/node-chrome:node 节点
3、selenium/node-chrome-debug:带有 VNC 服务端,便于观看执行步骤
# 主hub
docker pull selenium/hub
# node节点
docker pull selenium/node-chrome
# selenium/node-chrome-debug VNC Server
docker pull selenium/node-chrome-debug
4.2 运行容器
- hub容器
# 主hub
# -P:将容器端口映射到docker主机的一个随机端口上
# --name:重命名,便于管理
docker run -d -P --name hub_xag selenium/hub
- node1容器
# node节点
# --link:关联到hub主节点
docker run -d -p 5903:5900 --link hub_xag:hub --name node1 selenium/node-chrome
- node2容器
# chrome-debug容器
docker run -d -p 5900:5900 --link hub_xag:hub selenium/node-chrome-debug
4.3查看节点注册信息
使用 Chrome 打开通过 Docker 主机 IP + Hub 主节点映射的端口号组成的 URL
比如:http://127.0.0.1:4444/grid/console
4.4VNC Viewer,查看运行状态
输入 Docker 主机 IP + chrome-debug 映射在 Docker 主机的端口号,就可以实时查看 Docker 主机的运行情况
比如:http://127.0.0.1:5900
需要注意的是,第一次登陆默认的密码是:secret
网友评论