在Chrome 65上使用quit()方法后,Chrome进程不会被杀死

时间:2018-03-16 11:57:06

标签: selenium selenium-webdriver webdriver automated-tests selenium-chromedriver

将Chrome浏览器更新到版本65.0.3325.162(最新版)

后出现问题

当我在任务管理器中完成每个方法后开始测试时,会出现额外的僵尸Chrome进程,它占用了很多CPU资源。

Task manager

Chrome 65上的方法driver.quit()有什么变化吗?我要补充一点,在之前版本的Chrome浏览器上一切正常。

我使用数据提供程序,因此使用方法quit()是正确处理我的测试套件所必需的。

我使用mothod terminate()在每个测试类之后关闭浏览器。

我的东西: Windows 10 Selenium WebDriver ChromeDriver 2.36 Selenium WebDriver 2.20

@AfterClass(alwaysRun = true)
    protected void terminate() {
        if (browser != null) {
            try {
                browser.quit();
                browser = null;
            } catch (UnreachableBrowserException ex) {
                TestReporter.log(ex.getMessage());
            } catch (NoSuchSessionException noSuchSessionException) {
                TestReporter.log("Tried to quit browser with NULL session: " + noSuchSessionException.getMessage());
            }
        }

        if (application != null) {
            application = null;
        }
    }

2 个答案:

答案 0 :(得分:0)

更新为新版本的Chrome浏览器解决了我的问题。 Chrome 65.0.3325.162似乎有问题,导致创建了许多僵尸Chrome进程。

答案 1 :(得分:0)

1)将驱动程序作为单例

@Singleton
class BrowserInstance {

ChromeDriver getDriver(){
    ChromeOptions options = new ChromeOptions()
    options.addArguments("--headless --disable-gpu")
    return new ChromeDriver(options)
   }
}

2)使用Close并在finally块中退出

finally {
        chromeDriver.close()
        chromeDriver.quit()
    }

结果:您一次只能使用一个实例,并且如果看到任务管理器,则不会发现chromedriver和chrome进程挂起。