首页 文章

并行的Selenium WebDriver - 关闭WebDriver实例会中断其他测试

提问于
浏览
0

我无法让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 回答

  • 1

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

相关问题