驱动程序实例在测试类
我用TestNG + webdriver的&初始化浏览器在以下way-驱动程序实例在测试类
public class base{
private WebDriver driver;
@Test
public void launch(){
System.out.println("In base class");
driver = new FirefoxDriver();
}
public WebDriver getdriver(){
return driver;
}
}
,然后测试类是喜欢 -
public class test extends base{
WebDriver driver;
@BeforeClass
public void init(){
driver = getdriver(); //getdriver method from base class
}
@Test
public void test1(){
driver.get("http://www.yahoo.co.in"); //null pointer exception here
}
}
但在测试类我是将空指针异常作为驱动程序实例获取为null。 驱动程序的任何原因在测试类中为null? 有没有办法在执行开始时只启动一个浏览器&最后关闭而不使用静态?
从启动中删除@Test并从getdriver中调用启动。它似乎你可以做同样的事情在发射/ getdriver为:
public WebDriver getDriver(){
return new FirefoxDriver();
}
OR
private WebDriver driver;
public void launch(){
System.out.println("In base class");
driver = new FirefoxDriver();
}
public WebDriver getDriver(){
launch();
return driver;
}
在这种情况下,每当我从任何测试类调用getdriver()时,它都会打开新的浏览器实例。我只想打开一次浏览器。有没有可能做到这一点,而不使用静态驱动程序实例? – Deepak 2015-02-08 06:29:07
这就是我的答案......它将在getdriver中打开一个浏览器实例,并且将返回该实例,因为新函数只被调用一次。如果它的开放次数超过一次,那么你在代码中做错了什么...... – 2015-02-08 10:31:58
为什么你想避免静态变量?这似乎是一个单身人士的潜在候选人。 – Jordan 2015-02-08 15:26:12
我从代码创建结果xml。在使用静态和并行执行静态驱动程序导致问题。它是在另一个测试的xml中覆盖一个测试的结果。 – Deepak 2015-02-08 17:20:04