2014-02-27 73 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); 
}