目前,我正在设置一个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"将受到高度赞赏。
提前致谢!
答案 0 :(得分:0)
串行或并行运行取决于您如何触发测试,只是通过使用网格不会自动发生。网格只是帮助在各种节点上分发测试 - 如果测试是串行发送的,它将按顺序发送,如果并行发送,它将分布在各个节点上。
您可以考虑使用TestNG并行运行测试,也可以尝试实现自己的并行性。
你提到你的单个类有多个测试 - 使用testng,你可以将并行属性设置为触发每个测试的方法,这些测试将被发送到网格,并且集线器将负责获取一个空闲节点并执行你的测试。
注意编写线程安全的驱动程序启动代码,以便每个线程都有自己的驱动程序实例。