次のように 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 を Test コンストラクターに挿入します
@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 Interface を実装する複数のクラスを作成しました。しかし、JUnit5 では、それらすべてをテスト クラスに注入することはできません。Test クラスの新しいインスタンスも作成しません。
TestInstanceFactory を使用して Test クラスの新しいインスタンスを作成し、ParameterResolver インターフェイスの個別の実装を適用しようとしましたが、うまくいきませんでした。
最終結果: Selenium Grid を使用して複数のブラウザーで同じテストを並行して実行でき、別の Web ドライバーで複数回インスタンス化できる 1 つのテスト クラスのみを実行できます。