2014-02-27 36 views
0

Selenium集线器何时一次运行一个节点?我可能在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运行时,脚本首先在节点1上启动,在下一次运行时在节点2上启动。

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

硒代码格:

@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 /网格/寄存器5566 -port -browser “browserName = IEXPLORER,平台= WINDOWS”

节点2上5567端口

回答

0

代替使用-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。在节点命令中,您必须使用集线器正在侦听的端口。

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

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" 
+0

谢谢马科斯..但是,这似乎并没有为我工作..我看到这个错误 - “注册节点到集线器:http://xx.xx.xx.xx: - 1/grid/register ...无法注册此节点:发送注册请求时出错。“端口参数将hub端口设为-1而不是5555 .. – user3360476

+0

另外,我应该考虑包括两个“nodeUrl =”http://xx.xx.xx.xx/wd/hub“;”在代码中,每个机器一个?现在这指向中心网址。 – user3360476

0

Checek什么是“用户数据目录”开关设置为,在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); 
}