0

RemoteWebDriver でセッションを閉じるのに問題があります。この問題は、テストを並行して実行し、RemoteWebDriver のインスタンスの 1 つが close メソッドを呼び出すときに発生します。

例えば:

  1. テスト A が起動し、Selenium サーバーに接続します。
  2. テスト B が開始され、Selenium サーバーに接続します。
  3. テスト 閉じるメソッドを呼び出します。
  4. テスト B は、接続が切断された可能性があることを示す例外をスローします。

close() の呼び出しをコメントアウトすると、両方のテストが正常に実行されて完了しますが、両方のブラウザー ウィンドウが開いたままになります。

現在、最新バージョンの Firefox と 2.29.0 の seleium-server を実行しています。Selenium は顧客の請求書をサイトから収集するために使用されており、JBoss サーバー上で実行されています。

接続を作成するコードは次のとおりです。

public WebDriver getRemoteWebDriver() {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    WebDriver driver = null;
    URL url = null;

    // Connect to the selenium server
    try {
        url = new URL("http://127.0.0.1:4441/wd/hub");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

    capabilities.setBrowserName("firefox");
    capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
    capabilities.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true);

    driver = new RemoteWebDriver(url, capabilities);
    driver = new Augmenter().augment(driver);           // Used to take screens
    driver.manage().timeouts().implicitlyWait(SELENIUM_IMPLICIT_WAIT_SECONDS, TimeUnit.SECONDS);    // Set implicit wait time
    driver.manage().deleteAllCookies();                                                                             // Make sure we have clean session

    return driver;
}

私の質問は、RemoteWebDriver のインスタンスを 1 台のマシンで並行して適切に作成して閉じるにはどうすればよいですか? どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

1

単体テストからこのテストを実行している場合は、beforeclass および afterclass-hook を定義できます。このようにして、すべてのテストを実行する前に Selenium ドライバーを起動し、その後シャットダウンすることができます。

于 2013-01-28T14:48:07.453 に答える