美文网首页
Selenium Grid简单使用

Selenium Grid简单使用

作者: 是立品啊 | 来源:发表于2021-01-18 21:17 被阅读0次

一、简介

  • Selenium GridSelenium的三大组件( 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

相关文章

网友评论

      本文标题:Selenium Grid简单使用

      本文链接:https://www.haomeiwen.com/subject/ztcfzktx.html