0

当我通过 Selenium Grid 使用 TestNG 并行执行 5 个以上的测试时,只有 5 个同时执行。其余的都在排队。我已经配置了我的节点,使其支持 7 个 Chrome 实例。为什么剩下的 2 个实例没有得到利用?

这是来自 Grid Console 的节点屏幕截图:

在此处输入图像描述

节点配置截图:

节点配置

节点启动代码:

java -jar selenium-server-standalone-3.8.1.jar -role node  -hub http://localhost:4444/grid/register -port 5556 -nodeConfig nodeConfig.json

节点配置 JSON:

{
  "capabilities": [

    {
      "browserName": "chrome",
      "platform": "WIN10",
      "maxInstances": 7
    }

  ],
  "hub": "http://selenium-hub-host:4444"
}

TestNG XML(我使用并行并行运行所有 7 个测试):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">


<suite name="myTestSuit" parallel="tests" thread-count="10">


    <test name="myTest1">

        <parameter name="browser" value="Chrome"></parameter>

        <classes>

            <class name="testClass1"></class>
            <class name="testClass2"></class>
            <class name="testClass3"></class>

        </classes>

    </test>


    <test name="myTest2">

        <parameter name="browser" value="Chrome"></parameter>

        <classes>

            <class name="testClass1"></class>
            <class name="testClass2"></class>
            <class name="testClass3"></class>

        </classes>

    </test>


    <test name="myTest3">

        <parameter name="browser" value="Chrome"></parameter>

        <classes>

            <class name="testClass1"></class>
            <class name="testClass2"></class>
            <class name="testClass3"></class>

        </classes>

    </test>


    <test name="myTest4">

        <parameter name="browser" value="Chrome"></parameter>

        <classes>

            <class name="testClass1"></class>
            <class name="testClass2"></class>
            <class name="testClass3"></class>

        </classes>

    </test>


    <test name="myTest5">

        <parameter name="browser" value="Chrome"></parameter>

        <classes>

            <class name="testClass1"></class>
            <class name="testClass2"></class>
            <class name="testClass3"></class>

        </classes>

    </test>



    <test name="myTest6">

        <parameter name="browser" value="Chrome"></parameter>

        <classes>

            <class name="testClass1"></class>
            <class name="testClass2"></class>
            <class name="testClass3"></class>

        </classes>

    </test>


    <test name="myTest7">

        <parameter name="browser" value="Chrome"></parameter>

        <classes>

            <class name="testClass1"></class>
            <class name="testClass2"></class>
            <class name="testClass3"></class>

        </classes>

    </test>



</suite>

(我还尝试在我的系统中创建两个节点。每个节点都支持 5 个 Chrome,所以我总共有 10 个 Chrome 实例。在这种情况下,也只有 5 个可用实例被利用)。

4

3 回答 3

1

您需要更改maxSession节点配置 JSON 中的参数。

例如,

{
  "capabilities":
  [
    {
      "browserName": "chrome",
      "platform": "WIN10",
      "maxInstances": 7
    }
  ],
  "maxSession": 10,
  "hub": "http://selenium-hub-host:4444",

}
于 2020-01-09T13:10:06.013 回答
1

默认情况下线程数为 5,因此仅打开浏览器。实际上你需要在 testng.xml 文件中指定它。在套件标签 thread-count='7' 或 '10' 如您所愿。

于 2020-01-09T13:30:20.833 回答
1

我能够通过同时应用@murali selenium@Ratmir Asanov的解决方案来解决这个问题。

  1. 首先在 TestNG XML 中,设置 thread-count="10"(默认值为 5)
  2. 现在,在节点配置 JSON 中,设置“maxSession”:10(默认情况下,“MACHINE”中只允许 5 个会话)
于 2020-01-09T14:02:52.333 回答