Selenium Jupiter 中多浏览器测试执行的标准方法

Standard approach for multi browser test execution in Selenium Jupiter

我仔细阅读了 Selenium Jupiter 手册,但仍然不知道如何设置多个 Selenium Jupiter 中的浏览器 运行 每个浏览器中的每个测试。

是否应为此目的使用测试模板?

同样,我没有看到如何在 Selenium Jupiter 中执行此操作的示例?

p.s。 Selenium Grid 上的 RemoteDrivers 示例。

这是我的尝试:

public class BaseTestWithRemoteDrivers {

@RegisterExtension
static SeleniumExtension extension = new SeleniumExtension();

@BeforeAll
public static void setupAll() {
    extension.getConfig().setSeleniumServerUrl("http://localhost:4444/wd/hub");
    Browser chrome = BrowserBuilder.chrome().build();
    Browser firefox = BrowserBuilder.firefox().build();
    extension.addBrowsers(chrome, firefox);
}

@Test
public void testWithBrowser(WebDriver driver) {
    driver.get("https://www.google.com");
}

@AfterAll
public static void tearDownAll(WebDriver driver) {
    driver.quit();
}

很遗憾,只有 Chrome 浏览器会打开。

更新:我还发现有一条消息说:

未找到上下文 ID 的浏览器列表。如果需要,不确定如何设置浏览器列表。

到目前为止,我没有找到多浏览器支持,除非明确地将浏览器类型输入 mvn 命令,如下所示:

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

 @ExtendWith(SeleniumExtension.class)
    public class BaseTest {
    
        @Test
        public void testNumber1(RemoteWebDriver driver) throws {
            driver.get("https://www.google.com/");
      
        }
    
    
        @AfterAll()
        public static void tearDown(RemoteWebDriver driver) {
            driver.quit();
        }
    }

更新:

我也想出了用测试模板来做的方法。

下面是工作示例:

public class MultiBrowserTestTemplate {

@RegisterExtension
static SeleniumExtension extension = new SeleniumExtension();

@BeforeAll
static void setup() {
    String browsersList = System.getProperty("prop.browsers.list");
    List<String> browsers = Arrays.asList(browsersList.split(","));
    if (browsers.contains("chrome")) {
        extension.addBrowsers(BrowserBuilder.chrome().version("80.0.3987.106").build());
    }
    if (browsers.contains("firefox")) {
        extension.addBrowsers(BrowserBuilder.firefox().version("73.0").build());
    }
}
}

public class MultiBrowserDemoTest extends MultiBrowserTestTemplate {

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

maven 命令是这样的:

mvn verify -DMultiBrowserDemoTest
-Dsel.jup.selenium.server.url=http://localhost:4444/wd/hub
-Dprop.browsers.list=chrome,firefox