Selenium网格一次运行一个节点

时间:2014-02-27 13:01:33

标签: selenium selenium-webdriver selenium-grid

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上运行TestNG Test或通过pom.xml通过Jenkins运行时,脚本首先在node1上启动,然后在下一次运行中在节点2上启动。

可能是:1。错误的testNG.xml / selenium网格代码? 2.集线器以maxinstances = 1启动,这是否导致它?它有什么解决方案?尝试使用hubconfig.json但似乎没有生效。 3.节点上的任何配置错误? 4. IEDriverServer或selenium服务器版本问题? [尝试了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

2 个答案:

答案 0 :(得分:0)

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

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

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"

答案 1 :(得分:0)

检查RemoteWebDriver参数中user-data-dir开关的设置。如果每次启动时都写入同一个配置文件,则无法同时启动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);
}