Selenium Grid 2:本地集线器和2个本地节点

时间:2014-12-04 07:48:10

标签: selenium testng selenium-rc selenium-grid

目前,我正在设置一个Selenium Grid,用于在集线器上运行测试套件,并在节点上分发这些测试。

想法是在集线器上执行测试并分布在10个节点上以进一步执行它们。对于初学者和评估网格,我已经设置了一个本地集线器和2个本地节点。

在我的测试类中,我有4个测试,在使用RemoteDriver运行测试并将集线器作为URL和配置的功能传递时,它在Node1上执行所有四个测试,并且不将它分发到Node2。此外,它在Node1上串行运行所有4个测试。有谁知道这里可能有什么问题。请在下面找到设置。

集线器配置:

C:\Proto\Selserversidedjars>java 
    -jar selenium-server-standalone-2.44.0.jar 
    -role hub -hubConfig DefaultHub.json

节点1配置:

C:\Proto\Selserversidedjars>java 
    -jar selenium-server-standalone-2.44.0.jar  
    -role node  
    -hub http://localhost:4444/grid/register

节点2配置:

C:\Proto\Selserversidedjars>java 
    -jar selenium-server-standalone-2.44.0.jar 
    -role node 
    -nodeConfig DefaultNode1.json 
    -port 6666

Defaulthub.json:

{
  "host": null,
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "prioritizer": null,
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "nodePolling": 5000,

  "cleanUpCycle": 5000,
  "timeout": 300000,
  "browserTimeout": 0,
  "maxSession": 5,
  "jettyMaxThreads":-1
}

DefaultNode1.json:

{
  "capabilities":
      [
        {
          "browserName": "*firefox",
          "maxInstances": 5,
          "seleniumProtocol": "Selenium"
        },
        {
          "browserName": "*googlechrome",
          "maxInstances": 5,
          "seleniumProtocol": "Selenium"
        },
        {
          "browserName": "*iexplore",
          "maxInstances": 1,
          "seleniumProtocol": "Selenium"
        },
        {
          "browserName": "firefox",
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver"
        },
        {
          "browserName": "chrome",
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver"
        },
        {
          "browserName": "internet explorer",
          "maxInstances": 1,
          "seleniumProtocol": "WebDriver"
        }
      ],
  "configuration":
  {
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 5,
    "port": 6666,
    "host": ip,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": ip
  }
}

现在,在这些配置设置之后,我的集线器在端口4444上启动,节点1在5555启动,节点2在6666启动。在我的TestNG测试中,我正在尝试执行4次测试。鉴于我有多个测试要在单个类中运行,是否可以在单个节点上的多个节点或多个实例上分发这些测试?

任何帮助"如何在Node1上执行多个实例并在这种情况下将测试(让超过10个测试)分发给Node2"将受到高度赞赏。

提前致谢!

1 个答案:

答案 0 :(得分:0)

串行或并行运行取决于您如何触发测试,只是通过使用网格不会自动发生。网格只是帮助在各种节点上分发测试 - 如果测试是串行发送的,它将按顺序发送,如果并行发送,它将分布在各个节点上。

您可以考虑使用TestNG并行运行测试,也可以尝试实现自己的并行性。

你提到你的单个类有多个测试 - 使用testng,你可以将并行属性设置为触发每个测试的方法,这些测试将被发送到网格,并且集线器将负责获取一个空闲节点并执行你的测试。

注意编写线程安全的驱动程序启动代码,以便每个线程都有自己的驱动程序实例。