testng会启动尽可能多的webdriver实例作为测试用例吗?

时间:2013-11-19 04:55:14

标签: selenium testng

我遇到了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实例。我想要的是在第一次测试完成后,它的浏览器实例被退出,然后第二个测试用例启动,我做错了什么或者我应该如何更改我的代码?

1 个答案:

答案 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();
}