我无法让 RemoteWebDriver 关闭会话。当并行运行测试并且 RemoteWebDriver 的实例之一调用 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 的实例?任何帮助深表感谢。谢谢你。