0

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

4

1 回答 1

1

如果你从单元测试运行这个测试,你可以定义一个 beforeclass 和 afterclass-hook。这样,您的 selenium 驱动程序可以在运行所有测试之前启动并在之后关闭。

于 2013-01-28T14:48:07.453 回答