Selenium网格2:本地集线器和2个本地节点
目前,我正在为在集线器上运行测试套件设置一个Selenium网格,并在节点上分发这些测试 其想法是在集线器上执行测试,并将测试分布到10个节点上,以进一步执行测试。对于初学者和评估网格,我已经设置了一个本地中心和两个本地节点 在我的测试类中,我有4个测试,在使用RemoteDriver运行测试并将集线器作为URL和配置的功能传递时,它在Node1上执行所有四个测试,而不将其分发给Node2。此外,它在Node1上连续运行所有4个测试。有人知道这里可能出了什么问题吗。请在下面找到安装程序 集线器配置:Selenium网格2:本地集线器和2个本地节点,selenium,testng,selenium-rc,selenium-grid,Selenium,Testng,Selenium Rc,Selenium Grid,目前,我正在为在集线器上运行测试套件设置一个Selenium网格,并在节点上分发这些测试 其想法是在集线器上执行测试,并将测试分布到10个节点上,以进一步执行测试。对于初学者和评估网格,我已经设置了一个本地中心和两个本地节点 在我的测试类中,我有4个测试,在使用RemoteDriver运行测试并将集线器作为URL和配置的功能传递时,它在Node1上执行所有四个测试,而不将其分发给Node2。此外,它在Node1上连续运行所有4个测试。有人知道这里可能出了什么问题吗。请在下面找到安装程序 集线器配
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role hub -hubConfig DefaultHub.json
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role node
-hub http://localhost:4444/grid/register
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role node
-nodeConfig DefaultNode1.json
-port 6666
节点1配置:
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role hub -hubConfig DefaultHub.json
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role node
-hub http://localhost:4444/grid/register
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role node
-nodeConfig DefaultNode1.json
-port 6666
节点2配置:
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role hub -hubConfig DefaultHub.json
C:\Proto\Selserversidedjars>java
-jar selenium-server-standalone-2.44.0.jar
-role node
-hub http://localhost:4444/grid/register
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上执行多个实例并将testslet的(比如在这种情况下超过10个测试)分发给Node2的任何帮助,我们将不胜感激
提前谢谢 串行或并行运行取决于您触发测试的方式,而不是仅仅通过使用网格自动执行。网格只是帮助将测试分布在各个节点上——如果测试是串行发送的,它将串行地分布,如果并行发送,它将分布在各个节点上
您可以考虑使用并行运行测试,或者您可以冒险实现自己的并行性。
您提到您的单个类有多个测试—使用testng,您可以将parallel属性设置为方法,这些方法将触发各个线程中的每个测试,这些线程将被发送到网格,而中心将负责拾取一个空闲节点并执行您的测试注意编写线程安全驱动程序启动代码,以便每个线程都有自己的驱动程序实例。感谢您的快速回复!您能解释一下线程安全驱动程序启动代码吗?在testsuite中使用parallel=tests和parallel=methods有什么区别。我们在每节测试课上都有前法和后法,有多个测试。请提出新问题,而不是在评论中-帮助人们搜索答案。tests代表xml中的标记,它可以由任意数量的类、方法等组成。每个方法都是@Test方法