【问题标题】:Running headless Chrome in Selenium throws an "unknown error: DevToolsActivePort file doesn't exist" [duplicate]在 Selenium 中运行无头 Chrome 会引发“未知错误:DevToolsActivePort 文件不存在”[重复]
【发布时间】:2019-01-22 09:29:43
【问题描述】:

当尝试在 Selenium 中运行 Headless Chrome 时,我按照this 的示例编写了以下代码:

  ChromeOptions chromeOptions = new ChromeOptions();
  chromeOptions.addArguments("--headless");
  driver = new ChromeDriver(chromeOptions);

但是在运行代码时出现了这个错误:

驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置

所以我在代码中添加了这个:

chromeOptions.setBinary(System.getProperty("webdriver.chrome.driver"));

然后我将参数发送给程序: webdriver.chrome.driver=C:\\chromedriver_win32\\chromedriver.exe

但后来我明白了:

Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 47772
Only local connections are allowed.
Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 9515
Only local connections are allowed.
Invalid --log-level value.
Unable to initialize logging. Exiting...

所以我添加了日志记录设置:

 System.setProperty("webdriver.chrome.logfile", "C:\\chromedriver_win32\\chromedriver.log");
 System.setProperty("webdriver.chrome.verboseLogging", "true");
 chromeOptions.setCapability("--log-level", "WARNING");

但这似乎没有帮助,因为错误是:

Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 43365
Only local connections are allowed.
Starting ChromeDriver 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e) on port 9515
Only local connections are allowed.
Invalid --log-level value.
Unable to initialize logging. Exiting...
Caused by: org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: was killed
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location C:\\chromedriver_win32\\chromedriver.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)

所以看来当前的问题是unknown error: DevToolsActivePort file doesn't exist

【问题讨论】:

  • 我也有类似的情况。 “未知错误:DevToolsActivePort 文件不存在”问题太笼统了,只表示 selenium 无法启动进程(或找不到正在运行的驱动程序)。我相信您的问题(和我一样)是二进制设置“chromeOptions.setBinary(System.getProperty("webdriver.chrome.driver"));” setBinary 用于指示 chrome.exe,而不是 chromedriver.exe,这就是您看到两个实例启动的原因。在 Java 中,您只需要设置“webdriver.chrome.driver” env 属性,以便可以找到 chromedrive

标签: java google-chrome selenium selenium-webdriver google-chrome-headless


【解决方案1】:

要设置 webdriver 的位置,你可以使用这个

System.setProperty("webdriver.chrome.driver","location-driver"); //before 'new ChromeDriver...'

无头运行是你尝试过的

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
driver = new ChromeDriver(chromeOptions);

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多