如何在单个浏览器中运行多个UI测试?

时间:2018-10-17 08:10:40

标签: java selenium junit testng jboss-arquillian

首先:我是一名学生,正在尝试学习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")); } } ,但这会产生相同的结果。我已经搜索了整个互联网,但是他们的解决方案似乎不适用于我的情况:(

2 个答案:

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