【问题标题】:Selenium grid runs one node at a timeSelenium 网格一次运行一个节点
【发布时间】:2014-03-30 22:19:51
【问题描述】:

Selenium hub 何时一次运行一个节点?我可能在 selenium 代码和 testNG xml 方面都错了。

我已将 TestNG.xml 配置为运行并行线程,并且网格框架似乎没问题,集线器在 5555 上处于活动状态,http://xx.xx.xx.xx:5555/grid/console 显示两个节点已连接并通过 IE 浏览器处于活动状态。 IE 驱动服务器用于在这两个节点上启动 IE,selenium-server-standalone-2.35.0 用于所有节点和集线器上的网格。当我在 Eclipse 上或通过 pom.xml 通过 Jenkins“作为 TestNG 测试运行”时,脚本首先在节点 1 上启动,然后在下次运行时在节点 2 上启动。

可能是:1. 错误的 testNG.xml/selenium 网格代码? 2. Hub启动时maxinstances=1,是这个原因吗?有什么解决办法?尝试使用 hubconfig.json 但似乎没有生效。 3. 节点配置错误? 4. IEDriverServer 或 selenium server 版本问题? [也尝试了 37/39 版本]..


TestNG.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="CO" verbose='1' parallel="tests" thread-count="10" preserve-order="true">

<test name="FI" preserve-order="true">
<parameter name="browser" value="internet explorer" />
<parameter name="port" value="5566" />
<classes>

<class name="src/test/java.clickonce.remoteFresh"/>

</classes>
</test> <!-- Test -->

<test name="Ad" preserve-order="true">
<parameter name="browser" value="internet explorer" />
<parameter name="port" value="5567" />

<classes>
<class name="src/test/java.clickonce.Admin"/>
</classes>
</test>
</suite> 
<!-- Suite -->

网格的 Selenium 代码:​​

@BeforeTest
public void setUp() throws IOException {


    baseUrl = "http://xxx/";
    nodeUrl = "http://xx.xx.xx.xx/wd/hub";

    String sUrl = "http://xxx"; 
    DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
    capability.setBrowserName("iexplorer");
    capability.setPlatform(Platform.WINDOWS);
    capability.setCapability( InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true );
    capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);




    File file = new File("d:/IEDriverServer.exe");
    System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
    WebDriver WebDriverObj = new InternetExplorerDriver();
    WebDriverObj.get(sUrl); 

    driver = new RemoteWebDriver(new URL(nodeUrl), capability);
    selenium = new WebDriverBackedSelenium(driver, baseUrl);

}

节点命令 -

java -jar selenium-server-standalone-2.35.0.jar -  Dwebdriver.ie.driver="D:\IEDriverServer.exe" -role webdriver -hub http://

xx.xx.xx.xx:5555/grid/register -port 5566 -browser "browserName=iexplorer,platform=WINDOWS"

5567 端口上的节点 2

【问题讨论】:

    标签: selenium selenium-webdriver selenium-grid


    【解决方案1】:

    检查user-data-dir 开关在 RemoteWebDriver 参数中的设置。如果每次启动都写入同一个配置文件,您将无法同时启动 2 个节点。

        public ChromeUserImpl(URL url) {
        DesiredCapabilities cap = DesiredCapabilities.chrome();
        ChromeOptions o = new ChromeOptions();
        o.addArguments("user-data-dir=" <SHOULD BE DIFFERENT IN ORDER TO RUN SIMULATANOUSLY>);
        o.addArguments("test-type");
        o.addArguments("--start-maximized");
    
        cap.setCapability(ChromeOptions.CAPABILITY, o);
        mDriver = new RemoteWebDriver(url, cap);
    }
    

    【讨论】:

      【解决方案2】:

      不要在 Node 命令上使用-role webdriver,而是使用-role node。此外,更改指定集线器及其端口的方式:将-hub http://xx.xx.xx.xx:5555/grid/register -port 5566 更改为-hub http://xx.xx.xx.xx/grid/register -port 5555。在node命令中,必须使用hub监听的端口。

      因此,节点命令的最终版本将是:

      java -jar selenium-server-standalone-2.35.0.jar -role node -hub http://xx.xx.xx.xx/grid/register -port 5555 -Dwebdriver.ie.driver="D:\IEDriverServer.exe"  -browser "browserName=iexplorer,platform=WINDOWS"
      

      【讨论】:

      • 谢谢马科斯..但是,这似乎对我不起作用..我看到这个错误 - “将节点注册到集线器:xx.xx.xx.xx:-1/grid/register ...无法注册这个节点:发送注册请求时出错。” port 参数将集线器端口设为 -1 而不是 5555..
      • 另外,我是否应该考虑在代码中包含两个“nodeUrl = “xx.xx.xx.xx/wd/hub";”,每台机器一个?这现在指向集线器 url。
      猜你喜欢
      • 2018-05-28
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多