【问题标题】:Selenium WebDriver in Parallel - Closing WebDriver instance interrupts other testsSelenium WebDriver in Parallel - 关闭 WebDriver 实例会中断其他测试
【发布时间】:2013-01-26 23:41:02
【问题描述】:

我无法让 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 的实例?任何帮助深表感谢。谢谢你。

【问题讨论】:

    标签: java selenium web-scraping selenium-webdriver


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2018-12-11
      相关资源
      最近更新 更多