我正在使用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();
答案 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()
不与终端执行,因为它将进程留在服务器中。