【问题标题】:Selenium chromedriver does not close properlySelenium chromedriver 无法正确关闭
【发布时间】:2018-10-09 08:05:28
【问题描述】:

我正在使用 chromedriver 和 Java 来运行自动 Web 测试。为了能够在 Chrome 中使用扩展程序,我正在使用我现有的浏览器配置文件。从那以后,我遇到了以下问题:

  1. 运行硒测试,结果为绿色
  2. 手动打开 Chrome(或运行一些测试)
  3. 得到错误消息“chrome 应用程序没有正确关闭”

我正在关闭浏览器和驱动程序:

@AfterClass public static void tearDownClass() {driver.quit();}

我试过了:

@AfterClass public static void tearDownClass() {driver.close();}

但这只会关闭浏览器,而不是驱动程序。

经过一些尝试修复后,我模拟按下 CTRL+SHIFT+Q:

package SSO_CWP_APPROVAL;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

import org.openqa.selenium.WebDriver;


public class Keyboard_events {

    public static WebDriver driver;
    public Keyboard_events(WebDriver driver) {Keyboard_events.driver = driver;}

    public void ctrl_shift_q() throws AWTException, InterruptedException {
        Robot rob = new Robot();
        rob.keyPress(KeyEvent.VK_CONTROL);
        rob.keyPress(KeyEvent.VK_SHIFT);
        rob.keyPress(KeyEvent.VK_Q);
        rob.keyRelease(KeyEvent.VK_CONTROL);
        rob.keyRelease(KeyEvent.VK_SHIFT);
        rob.keyRelease(KeyEvent.VK_Q);
        Thread.sleep(1000);
    }
}

在这种情况下,睡眠是必要的。睡眠时间少了,又报错了。

@AfterClass public static void tearDownClass() throws AWTException, InterruptedException {K_events.ctrl_shift_q();driver.quit();}

二进制文件:

版本:Oxygen.3a 发布 (4.7.3a) 内部版本号:20180405-1200

chromedriver.exe 2.42

JDK 8u151

Chrome 69.0.3497.100

有没有更好的方法关闭浏览器和驱动?

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为最新的二进制版本无法重现该问题。

标签: java selenium-chromedriver


【解决方案1】:

这可能是 Google Chrome 69 中的错误。在版本 70 和 71 中 driver.close();driver.quit(); 工作正常。

【讨论】: