0

我想使用 Maven 执行 Selenium Grid 测试,如下所示:

mvn verify-Dtest=BaseTest -Dprop.selenium.server.url=http://localhost:4444/wd/hub -Dprop.browser=chrome
-Dprop.version=80.0.3987.106

我使用 JUnit5 ParameterResolver 接口将 ChromeDriver 注入测试构造函数

   @ExtendWith(ChromeRemoteWebDriverParameterResolver.class)
   @TestInstance(TestInstance.Lifecycle.PER_CLASS)
   public class MultiBrowserDemoTest {

    RemoteWebDriver driver;

    public MultiBrowserDemoTest(RemoteDriver driver) {
        this.driver = driver.getDriver();
    }


    @SneakyThrows
    @Test
    public void testGrid() {
        driver.get("https://www.google.com/");
        WebElement search = driver.findElement(By.name("q"));
        search.sendKeys("JUnit5 extensions");
        search.submit();
    }

    @AfterAll()
    void tearDown() {
        driver.quit();
    }
}

它工作正常。但我看不到如何实现多浏览器测试执行。

比方说,我要添加多个浏览器 -Dprop.browser=chrome, firefox, opera, ie11

我创建了多个实现 ParameterResolver 接口的类。但是 JUnit5 不允许我将它们全部注入到我的测试类中。它也不会创建 Test 类的新实例。

我尝试使用 TestInstanceFactory 创建我的 Test 类的新实例并应用 ParameterResolver 接口的单独实现,但它对我不起作用。

最终结果:我可以使用 Selenium Grid 在多个浏览器中并行运行相同的测试,并且只有一个测试类可以使用单独的 webdriver 多次实例化。

4

1 回答 1

1

如果我正确理解了您的场景,您所要求的是支持我们所谓的“参数化容器”(即,类似于@ParameterizedTest但在类级别的东西),这在 JUnit Jupiter 中尚不存在。

有关详细信息,请参阅 JUnit Jupiter 问题#871#878

于 2020-09-27T12:54:02.727 回答