如何杀死许多 geckodriver.exe 个进程?

How to kill many geckodriver.exe processes?

我正在使用 Windows 10 pro x64、Firefox 50.x、Java 8、Selenium 3.0.1

public RemoteWebDriver remoteWebDriver;

//...

System.setProperty("webdriver.gecko.driver", browserWebDriverFilePath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
remoteWebDriver = new FirefoxDriver(capabilities);
remoteWebDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
remoteWebDriver.manage().window().maximize();

//...

remoteWebDriver.quit();

运行 来自命令行:

taskkill /F /IM geckodriver.exe

或者更好的是,将它放在一个批处理文件中,运行 每次你想清理该文件。

如果你愿意,你也可以在你开始之前从你的代码中做到这一点 运行宁:

boolean isDebug = java.lang.management.ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
try {
    if (isDebug)
        Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe");
} catch (IOException e) {
    e.printStackTrace();
}

仅在调试时避免在 运行 并行时杀死从机上的实例。

我最近遇到了 webdriver 的这个问题,它留下了许多僵尸 geckodriver 进程。

将 driver.quit() 放在 finally 块中可以解决此问题。

FirefoxOptions options = new FirefoxOptions();
options.addArguments("--headless");
WebDriver driver = new FirefoxDriver(options);

try {

   .... 

} finally {
   driver.quit();
}

if driver.Close() 和执行 driver.Quit(),这种方式不成功,但用 driver.Quit()

覆盖 driver.Close()

不能使用终端执行,因为会将进程留在服务器中。