我遇到了Selenium Grid和TestNG的问题。在完成所有测试类之前,我的测试脚本将不再是浏览器。
我已经在我的Selenium Grid上运行了5个Chrome实例,然后下面是我的xml文件
<suite name="BrowserTest">
<test name="Test1" >
<parameter name="browserName" value="chrome"/>
<classes>
<class name= "Pagetest" />
</classes>
</test>
<test name="Test2" >
<parameter name="browserName" value="firefox"/>
<classes>
<class name= "Pagetest" />
</classes>
</test>
<test name="Overview Page Test on ie, English" >
<parameter name="browserName" value="ie"/>
<classes>
<class name= "Pagetest" />
</classes>
</test>
</suite>
这是我的测试脚本 公共类Pagetest { 私人WebDriver浏览器;
public PateTest( String browser){
// create a browser instance.
}
@AfterClass (or @afterTest)
public void afterTest() throws Exception {
System.out.println("this test is done");
this.browser.quit();
}
@Test
public void test1(){
this.browser.get("www.google.com");
// doing some login stuff
}
}
现在,当我运行测试时,testNG将逐个创建3个chrome webdirver实例(运行测试)。但是在完成第一次测试之后,在完成所有3次测试之前,不会退出第一次测试的浏览器实例,然后几乎同时退出所有3个chrome实例。我想要的是在第一次测试完成后,它的浏览器实例被退出,然后第二个测试用例启动,我做错了什么或者我应该如何更改我的代码?
答案 0 :(得分:0)
尝试使用threadlocal,当你甚至并行运行测试时它会有所帮助
public ThreadLocal<WebDriver> driver=null;
@beformethod()
public void setUp
{
driver = new ThreadLocal<WebDriver>();
driver.set(new ChromeDriver());
return driver.get();
}
@AfterMethod
public void closeBrowser() {
{
driver.get().quit();
}