我正在使用Selenium webdriver
,但它没有正确退出chrome
和chrome
驱动程序。一些过程稳定了跑步者。
退出chrome的代码:
driver.quit();
启动chrome的代码:
System.setProperty("webdriver.chrome.driver","/<path to chrome driver>/chromedriver");
ChromeOptions options = new ChromeOptions();
options.setBinary(new File("/<path to chrome >/google-chrome"));
driver = new ChromeDriver(options);
Chrome驱动程序版本:2.9.248304 铬版本:40.0.2214.115 硒版:2.32 操作系统:Linux java.version:1.7.0_71
提前致谢, 奈拉
答案 0 :(得分:2)
所以,没有什么对我有用。我最终做的是在我的 addArguments 上设置一个唯一的 ID 来启动 chromedriver,然后当我想退出时,我会做这样的事情:
opts.addArguments(...args, 'custom-pid-' + randomId());
然后确保它退出:
await this.driver.close()
await this.driver.quit()
spawn(`kill $(ps aux | grep ${RANDOM_PID_HERE} | grep -v "grep" | awk '{print $2}')`)
答案 1 :(得分:1)
你是否在finally块中执行了driver.quit()?
System.setProperty("webdriver.chrome.driver","/<path to chrome driver>/chromedriver");
ChromeOptions options = new ChromeOptions();
options.setBinary(new File("/<path to chrome >/google-chrome"));
driver = new ChromeDriver(options);
try
{
//automated steps
}
finally
{
driver.quit();
}
答案 2 :(得分:1)
我这样解决了他们:
import os
os.system('killall chrome')
如果您不使用Google Chrome浏览器,这将非常有用。
答案 3 :(得分:0)
问题在于针对Chrome的driver.quit()方法。驱动程序退出没有正常工作它没有杀死所有chrome进程(包括子进程)。我做了什么。我更改了Selenium jar代码以修复我的项目,不幸的是我无法分享我的代码项目规则,不允许共享任何类型的代码。
答案 4 :(得分:0)
1)将驱动程序作为单例
$Title = $_POST['title'];
2)使用Close并在finally块中退出
@Singleton
class BrowserInstance {
ChromeDriver getDriver(){
ChromeOptions options = new ChromeOptions()
options.addArguments("--headless --disable-gpu")
return new ChromeDriver(options)
}
}
结果:您一次只能使用一个实例,并且如果看到任务管理器,则不会发现chromedriver和chrome进程挂起。
答案 5 :(得分:0)
如果我使用,对我来说很好
driver.close();
driver.quit();
答案 6 :(得分:0)
您可以在这种情况下为 Web 驱动程序使用对象池模式,如下所示:
*
* 该类通过最终变量“DRIVER_INSTANCES”创建在 Main.java 类中定义的 WebDriver 实例池,然后从该 Main 类实例化该池
public class WebDriverPool {
public static Vector<WebDriver> driverPools = new Vector<WebDriver>();
public static void initializeWebDriverPool() {
for(int i=0; i<Main.DRIVER_INSTANCES; i++) {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
// Add options to Google Chrome. The window-size is important for responsive sites
ChromeOptions options = new ChromeOptions();
//options.addArguments("headless");
options.addArguments("window-size=1200x600");
WebDriver driver = new ChromeDriver(options);
driverPools.add(driver);
}
System.out.println("Driver pool initialized");
}
public static WebDriver getAndRemove() {
WebDriver driver = driverPools.get(0);
driverPools.remove(0);
return driver;
}
/*
* When our all the task are finished then this method is called from the Main.java class to close the running chrome instances
*/
public static void quitAllDrivers() {
for(WebDriver driver: driverPools) {
driver.quit();
}
}
}