我无法让RemoteWebDriver关闭会话 . 并行运行测试并且RemoteWebDriver的一个实例调用close方法时会发生此问题 .
例如:
-
测试A启动并连接到selenium服务器 .
-
测试B启动并连接到selenium服务器 .
-
测试一个call close方法 .
-
测试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 回答
如果从单元测试运行此测试,则可以定义beforeclass和afterclass-hook . 这样,您的selenium驱动程序可以在运行所有测试之前启动,然后关闭 .