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 を 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 つのテスト クラスのみを実行できます。

4

1 に答える 1