首先:我是一名学生,正在尝试学习UI测试(我只了解基础知识)。我想运行多个UI测试,而不在每次测试后都关闭浏览器。我正在使用TestNG,arquillian和graphene,但是如果有帮助,我不介意切换到JUnit。到目前为止,我得到的是:
cx_freeze
我也尝试过将驱动程序带到超类public class ParentTest extends Arquillian
{
}
public class Test2and1 extends ParentTest
{
@Test(dependsOnGroups = {"test1"})
public void test2and1()
{
assertFalse(driver.getTitle().equals("123"));
}
}
public class Test1 extends ParentTest
{
@Test(groups = {"test1"})
public void test1()
{
assertFalse(driver.getTitle().equals("123"));
}
}
,但这会产生相同的结果。我已经搜索了整个互联网,但是他们的解决方案似乎不适用于我的情况:(
答案 0 :(得分:1)
Arquillion Drone为webdriver管理提供了三个生命周期。它们是方法,类和部署级别范围。默认范围是类范围。因此,Webdriver实例是在类级别创建和销毁的。
尝试使用带有虚拟部署类的Deployment作用域无人机。我没有尝试过。
public class ParentTest extends Arquillian {
@Deployment(name = "dummydeploy")
public static Archive deploy() {
return ShrinkWrap.create(Archive.class);
}
@Drone
@OperateOnDeployment("dummydeploy")
WebDriver static foo;
}
答案 1 :(得分:0)
您可以通过创建单例webdriver对象并在测试方法中使用getter来解决此问题:
public class SingletonWebDriver {
private static WebDriver singletonWebDriver;
public static WebDriver getDriver() {
if (singletonWebDriver == null) {
singletonWebDriver = new ChromeDriver();
}
return singletonWebDriver;
}
}
public class ParentTest extends Arquillian {
protected WebDriver getDriver() {
return SingletonWebDriver.getDriver();
}
}
public class Test1 extends ParentTest {
@Test(groups = {"test1"})
public void test1() {
assertFalse(getDriver().getTitle().equals("123"));
}
}