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

时间:2020-04-24 07:54:10

标签: junit5 selenium-jupiter

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

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

再次,我没有看到如何在Selenium Jupiter中做到这一点的例子?

p.s。在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浏览器会打开。

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

找不到上下文ID的浏览器列表。不确定是否需要设置浏览器列表。

1 个答案:

答案 0 :(得分: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验证-DMultiBrowserDemoTest
-Dsel.jup.selenium.server.url = http:// localhost:4444 / wd / hub
-Dprop.browsers.list = chrome,firefox