当前位置: 首页> 科技> 互联网 > Selenium自动化Grid- 让自动化分布式执行变得可能

Selenium自动化Grid- 让自动化分布式执行变得可能

时间:2025/9/17 19:16:00来源:https://blog.csdn.net/weixin_71807218/article/details/140234224 浏览次数:2次

什么是Selenium Grid?

Selenium Grid是Selenium的三大组件之一,允许用户同时在不同的机器和系统上测试不同浏览器。
也就是说Selenium Grid支持分布式的测试执行。它可以让你的测试用例在一个分布式的执行环境中运行。

由上图可见,测试脚本会通过selenium hub节点分发给不同的node节点,而不同的node节点所在的操作系统和搭载的浏览器类型可以是不同的,接下来我们看下hub节点和node节点具体分别有什么作用:

hub节点

  • 中心节点,或总控节点
  • 管理各个node节点的注册信息和状态信息
  • 接收并转发客户端(测试脚本)请求到合适的node节点

node节点

  • 子节点,或代理节点
  • 负责注册配置信息到hub节点(平台、浏览器、浏览器版本等)
  • 负责接收来自hub节点的转发的请求以执行测试脚本
  • 也可单独作为远程节点执行测试脚本

环境准备

环境说明:

  • 本地端系统为win10,搭载V68版本的Chrome浏览器,IP地址为192.168.1.222
  • 远程端系统为win7,搭载V56版本的Firefox浏览器,IP地址为192.168.140.130
  • 两台主机能够相互ping通
  • hub节点和node1节点都是在本地端工作,node2节点在远程端工作

环境准备步骤:

  1. 测试机器安装JDK,配置环境变量

  2. 下载selenium-server-standalone-x.x.x.jar

    https://npm.taobao.org/mirrors/selenium

  3. 下载浏览器驱动

    Chrome:https://npm.taobao.org/mirrors/chromedriver

    Firefox:https://npm.taobao.org/mirrors/geckodriver/

    IE:https://npm.taobao.org/mirrors/selenium 注:IE驱动和selenium依赖在一起

配置运行

1、本地端启动hub

java -jar selenium-server-standalone-3.141.59.jar -role hub -port 8888 -maxSession 10

参数解释:

  • java -jar selenium-server-standalone-3.141.59.jar 运行jar包
  • -role hub 以hub的角色运行
  • -port 8888 指定hub运行的端口(默认为4444)
  • -maxSession 10 最大的处理会话
2、查看hub的运行状态

浏览器中输入http://localhost:8888/grid/console 进入到到hub的console控制台

3、启动node1

node1节点工作在本地端,配置的浏览器为V68的chrome

java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.4.4:8888/grid/register" -port 5558 -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"

参数解释:

  • -Dwebdriver.chrome.driver="chromedriver.exe" 指定chromeDriver驱动所在的路径(本地)
  • -jar selenium-server-standalone-3.141.59.jar 运行jar包
  • -role node 以node角色执行
  • -hub "http://192.168.1.222/grid/register" 指定要链接的hub地址,这样node才能和hub通讯连接上
  • -port 5558 node的执行端口
  • -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"
    • browserName=chrome 运行的浏览器名称
    • maxInstances=2 最多支持两个浏览器实例
    • version=68 浏览器版本号
    • platform=WINDOWS 平台名称

运行之后的效果:

浏览器再次刷新访问hub的console端

4、启动远程端的node2节点

node2节点工作在远程端,配置的浏览器为V56的chrome

启动配置为

java  -Dwebdriver.firefox.driver="geckodriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.140.1:8888/grid/register" -port 5558  -browser "browserName=firefox,maxInstances=2,version=56,platform=WINDOWS"

浏览器再次刷新访问hub的console端,可以看到两个node节点已经成功注册到hub节点上

执行脚本


// 期望能力对象DesiredCapabilities capabilities = new DesiredCapabilities();//配置测试的浏览器,配置Chrome则会启动本地node1节点浏览器进行测试,配置Firefox则会启动远程端的Firefox进行测试capabilities.setBrowserName(BrowserType.CHROME);// hub节点String url = "http://192.168.1.222:8888/wd/hub";//和hub建立通讯,把相应配置传给hub,hub会根据配置选择注册的node节点,打开相应的浏览器进行测试WebDriver driver = new RemoteWebDriver(new URL(url), capabilities);driver.get("http://www.baidu.com");driver.findElement(By.id("kw")).sendKeys("柠檬班软件测试");Thread.sleep(10000);driver.quit();

通过上述配置及脚本我们能够启动本地node1节点和node2节点分别进行测试,单node节点只能支持一款浏览器进行测试,如何让node节点可以支持多款浏览器呢?

答案就是在配置node节点的时候传入的参数配置兼容多款浏览器即可。

node节点配置兼容不同浏览器

node节点可以配置单一浏览器,如chrome、firefox、IE等等,也可以配置兼容多款浏览器

这样只要符合node节点配置中的任何一个,hub会将客户端的执行请求发送过来

java -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.firefox.driver="geckodriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.140.1:8888/grid/register" -port 5555  -browser "browserName=internet explorer,maxInstances=4,version=11,platform=WINDOWS" -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS" -browser "browserName=firefox,maxInstances=3,version=56,platform=WINDOWS"

现在node1节点和node2节点采用相同的启动参数配置启动

我们可以看到,grid的console控制台显示两个node节点都可以支持多浏览器测试

node节点启动方式二

之前启动的方式是通过命令行或者bat脚本启动node节点,官方提供了两种方式,其二就是通过json配置文件启动

java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig node.json

node.json配置文件如下:


{"capabilities":[{"browserName": "firefox","maxInstances": 5,"seleniumProtocol": "WebDriver","webdriver.firefox.driver":"firefox.exe",#"firefox_binary":"D:\\Program Files\\Mozilla Firefox\\firefox.exe","platform":"WINDOWS"},{"browserName": "chrome","maxInstances": 5,"seleniumProtocol": "WebDriver","webdriver.chrome.driver":"chromedriver.exe","platform":"WINDOWS"},{"browserName": "internet explorer","maxInstances": 5,"seleniumProtocol": "WebDriver","platform":"WINDOWS"}],"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy","maxSession": 5,"port": -1,"register": true,"registerCycle": 5000,"hub": "http://192.168.1.222:8888","nodeStatusCheckTimeout": 5000,"nodePolling": 5000,"role": "node","unregisterIfStillDownAfter": 60000,"downPollingLimit": 2,"debug": false,"servlets" : [],"withoutServlets": [],"custom": {}}

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

关键字:Selenium自动化Grid- 让自动化分布式执行变得可能

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: