selenium hub/node配置以及webdriver.io集成selenium

selenium Grid使用Hub和Node模式,一台计算机作为Hub(管理中心)管理其他多个Node(节点)计算机。Hub负责将测试用例分发给多台Node计算机执行,并收集多台Node计算机执行结果的报告,汇总后提交一份总的测试报告。

selenium文档:https://www.selenium.dev/documentation/zh-cn/grid/grid_3/setting_up_your_own_grid/

Hub

在分布式测试模式中,只能有一台作为Hub的计算机。

Hub负责管理测试脚本, 并负责发送脚本给其他Node节点。

所有的Node节点计算机会在Hub计算机中先进行注册,注册成功后再和Hub计算机通信,Node节点计算机会告之Hub自己的相关信息。例如,Node节点的浏览器相关信息、最多并发数等。

Hub计算机可以给自己分配执行测试用例的任务。

Hub计算机分发的测试用例任务会在各个Node节点计算机执行。

Node

在分布式测试模式中,可以有一个或者多个Node节点。

Node节点会打开本地的浏览器完成测试任务并返回测试结果给Hub。

Node节点的操作系统和浏览器版本无需和Hub保持一致。

在Node节点上可以同时打开多个浏览器并行执行测试任务。

配置环境

  1. 运行selenium需要java环境,所以首先安装java的JDK,然后配置好java环境
  2. 下载 selenium-server-standalone.jar,地址https://selenium.dev/downloads/
  3. 打开命令行窗口,来到存放selenium-server-standalone.jar文件的地方。 在终端启动服务:
java -jar selenium-server-standalone.jar -role hub

转发器(hub)默认会监听4444端口,你也可以通过打开浏览器访问http://localhost:4444/grid/console来查看转发器(hub)的状态。

如果需要改变默认端口,你可以添加-port加上一个数字作为参数来代表你期望监听的端口, 同时,所有其他的可选参数都可以在下面这个JSON配置文件里找到。

方便起见,你也可以指定一个JSON格式的配置文件来配置并启动你的转发器(hub)。 你可以这么做:

java -jar selenium-server-standalone.jar -role hub -hubConfig hubConfig.json -debug

4.启动节点

java -jar selenium-server-standalone.jar -role node -hub http://localhost:4444

通过在命令行中设置JVM属性(在-jar参数前使用-D参数),会被传递到节点里: -Dwebdriver.chrome.driver=chromedriver.exe

也可以使用JSON配置文件来启动服务网格节点

java -Dwebdriver.chrome.driver=chromedriver.exe -jar selenium-server-standalone.jar -role node -nodeConfig node1Config.json

JSON文件如下:

{
  "capabilities": [
    {
      "browserName": "firefox",
      "acceptSslCerts": true,
      "javascriptEnabled": true,
      "takesScreenshot": false,
      "firefox_profile": "",
      "browser-version": "27",
      "platform": "WINDOWS",
      "maxInstances": 5,
      "firefox_binary": "",
      "cleanSession": true
    },
    {
      "browserName": "chrome",
      "maxInstances": 5,
      "platform": "WINDOWS",
      "webdriver.chrome.driver": "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
    },
    {
      "browserName": "internet explorer",
      "maxInstances": 1,
      "platform": "WINDOWS",
      "webdriver.ie.driver": "C:/Program Files (x86)/Internet Explorer/iexplore.exe"
    }
  ],
  "configuration": {
    "_comment" : "Configuration for Node",
    "cleanUpCycle": 2000,
    "timeout": 30000,
    "proxy": "org.openqa.grid.selenium.proxy.WebDriverRemoteProxy",
    "port": 5555,
    "host": ip,
    "register": true,
    "hubPort": 4444,
    "maxSession": 5
  }
}

在webdriver.io中集成selenium

除了webdriver.io的常规配置外,在webdriver.io的配置文件中添加以下内容:

  protocol: 'https',//默认为http
  hostname: 'selenium-hub.com',//你的selenium hub地址
  path:'/wd/hub',//默认值/wd/hub
  capabilities: [{ //node节点配置了什么浏览器,以及自己需要在什么浏览器上测试,就在该数组中配置即可
    browserName: 'chrome',
    port: 443 //由于我们的selenium hub是用的https来完成的,且并未配置端口号,所以此处使用的是https的端口443
  }, {
    browserName: 'firefox',
    port: 443
  }]

注:并不需要安装额外的包,例如selenium-standalone-service之类的,hub和node节点配置好之后,直接使用即可

你可能感兴趣的:(selenium hub/node配置以及webdriver.io集成selenium)