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

时间:2016-11-20 09:27:58

标签: selenium geckodriver

我正在使用Windows 10专业版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();

enter image description here

3 个答案:

答案 0 :(得分:4)

从命令行运行:

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();
}

仅在调试时才能避免在并行运行时杀死slave上的实例。

答案 1 :(得分:0)

我最近在使用webdriver时遇到了此问题,该问题使许多僵尸geckodriver进程离开了。

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

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

try {

   .... 

} finally {
   driver.quit();
}

答案 2 :(得分:0)

如果是driver.Close()和execute driver.Quit(),则这种方法无法成功,但可以通过driver.Quit()覆盖driver.Close()

不与终端执行,因为它将进程留在服务器中。