1

我浏览了 Selenium Jupiter 手册,但仍然无法理解如何在 Selenium Jupiter 中设置多个浏览器以在每个浏览器中运行每个测试。

应该为此目的使用测试模板吗?

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

ps Selenium Grid 上的 RemoteDrivers 示例。

这是我的尝试:

公共类 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 浏览器会打开。

Upd:我还发现有一条消息说:

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

4

1 回答 1

1

到目前为止,我没有找到多浏览器支持,除非将浏览器类型显式放入 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

于 2020-06-22T20:10:59.893 回答