我使用所述硒網格上3個不同的設備A,B和C.機器A我GWT Web應用程序的跨瀏覽器測試(使用TestNG)正在工作,輪轂以及該節點。而另外兩臺機器B和C被賦予節點的角色。現在如何讓集線器決定在Selenium Grid的並行測試期間執行哪個節點?
,在我面前的任務是讓中心自行決定哪些節點出了三個節點都提供給它,然後它會執行這些特定節點上的測試。對於例如:如果B機關閉或當前不使用則集線器將不執行,並會繼續與機器A和C.
而且測試,其他的任務不是改變代碼爲每特別是Node,因爲根據我在Selenium Grid中的一些知識和經驗,這就是我在這裏所做的。下面提到的是我在啓動集線器後編寫的代碼以及所有這些機器上的節點。
package testNgPackage;
public class Browser {
//ThreadLocal will provide thread-safe tests
protected ThreadLocal<RemoteWebDriver> threadLocal = null;
@BeforeTest
@Parameters("browser")
public void setup(String browser) throws MalformedURLException{
String nodeMachine1 = "http://xxx/wd/hub";
String nodeMachine2 = "http://yyy/wd/hub";
String nodeMachine3 = "http://zzz/wd/hub";
if(browser.equalsIgnoreCase("chrome")) {
System.setProperty("webdriver.chrome.driver", ".src/Drivers/chromedriver.exe");
DesiredCapabilities capability = null;
capability = DesiredCapabilities.chrome();
capability.setPlatform(Platform.VISTA);
capability.setBrowserName("chrome");
threadLocal = new ThreadLocal<RemoteWebDriver>();
threadLocal.set(new RemoteWebDriver(new URL(nodeMachine1), capability));
}
else if(browser.equalsIgnoreCase("firefox")) {
System.setProperty("webdriver.gecko.driver", ".src/Drivers/geckodriver.exe");
DesiredCapabilities capability = null;
capability = DesiredCapabilities.firefox();
capability.setPlatform(Platform.WIN10);
capability.setBrowserName("firefox");
threadLocal = new ThreadLocal<RemoteWebDriver>();
threadLocal.set(new RemoteWebDriver(new URL(nodeMachine2), capability));
}
}
public WebDriver getDriver() {
return threadLocal.get();
}
@AfterTest
public void closeBrowser(){
getDriver().close();
}
}
要在其上執行測試的代碼擴展了這個Browser類,但是編寫代碼在這裏沒有用處。下面還提到了testng.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="tests" thread-count="2">
<test name="FirefoxTest">
<parameter name="browser" value="Firefox" />
<classes>
<class name="testNgPackage.TestNGClass"/>
</classes>
</test>
<test name="ChromeTest">
<parameter name="browser" value="Chrome" />
<classes>
<class name="testNgPackage.TestNGClass"/>
</classes>
</test>
</suite>
我該怎麼做才能優化我的代碼並完成任務?
你所需要的功能,硒已經包括。你爲什麼要實現自己。 – yong