2016-04-09 21 views
0

多個節點下面執行腳本是我的代碼 -如何在平行使用硒電網

DesiredCapabilities capability = DesiredCapabilities.firefox(); 
capability.setBrowserName("firefox"); 
capability.setPlatform(Platform.VISTA); 
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability); 
driver.manage().window().maximize(); 
driver.get(url); 

我想執行的3個不同的節點

對於開始我使用的命令HUB我的腳本: - Java的罐子硒 - 服務器 - 獨立-2.53.0.jar -role轂-port 4444

和節點

節點1: - Java的罐子硒 - 服務器 - 獨立-2.53.0.jar -role的webdriver -hub http://192.168.1.118:4444/grid/register -port 5556

節點2: - Java的罐子硒 - 服務器 - 獨立-2.53.0.jar -role的webdriver -hub http://192.168.1.118:4444/grid/register -port 5557

節點3: - Java的罐子硒的服務器獨立-2.53.0.jar -role webdriver的-hub http://192.168.1.118:4444/grid/register -port 5558

所有3個節點都在3噸不同的機器所以我的問題是我需要在代碼中提及所有3個節點的IP地址,還是有任何方法可以在所有3臺機器上並行執行腳本?

回答

0

不,你不能直接這樣做。默認情況下,我認爲一個節點支持5個會話。因此,只有在節點1中的所有5個會話都耗盡之後,測試才能轉到第二個節點。因此,爲了能夠在所有3個節點上並行運行測試,您需要以maxSession爲1開始所有節點,然後分離出3個線程進行測試。這將導致所有節點同時運行您的測試。但只是想知道爲什麼你想要針對所有節點運行測試?你的用例是什麼?

+0

克里希南,我懷疑。我認爲集線器不會耗盡一個節點的所有瀏覽器,然後轉向第二個節點。我認爲它會向node1的第一個瀏覽器分配第一個請求,然後向node2的第一個瀏覽器分配第一個請求,向node3的第一個瀏覽器分配第三個請求,然後重複該循環。糾正我,如果我錯了。 – Paras

+0

@pArAs顯然,節點分佈的邏輯似乎最近已經改變。作爲提交https://github.com/SeleniumHQ/selenium/commit/3cebf747f844f2a25b2067511b108361f6140b1f的一部分,行爲已更改爲考慮資源利用率,然後將該信息與創建的上次會話的時間戳(如果有兩個節點相同的資源利用率)來決定這一點。所以我不會粗略地說它像一個循環技術,它在節點之後進行新的會話分發,但是在高層次上是的,它可以被調用。 –

0

如果您使用的是testNG,那麼您可以在testng.xml中使用'parallel'屬性作爲示例博客,請參閱here

你也可以使用Maven的maven-failsafe-plugin和<forkCount>標籤,看看this

希望這有助於。