RemoteWebDriver でセッションを閉じるのに問題があります。この問題は、テストを並行して実行し、RemoteWebDriver のインスタンスの 1 つが close メソッドを呼び出すときに発生します。
例えば:
- テスト A が起動し、Selenium サーバーに接続します。
- テスト B が開始され、Selenium サーバーに接続します。
- テスト 閉じるメソッドを呼び出します。
- テスト 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 台のマシンで並行して適切に作成して閉じるにはどうすればよいですか? どんな助けでも大歓迎です。ありがとうございました。