WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist

WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist

这是一个老问题,但我没有找到适合我的情况的答案。

我的代码是一个简单的测试代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
url="http://news.163.com/"
chrome_options = Options()
# specify headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('–headless')
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("start-maximized")
chrome_options.add_argument("disable-infobars")
browser = webdriver.Chrome(options=chrome_options)
browser.set_page_load_timeout(300)
browser.set_script_timeout(300)
browser.get(url)
title=browser.find_elements_by_xpath('//div[@id="js_top_news"]/h2/a')
print(title[0].get_attribute('innerHTML'))
browser.quit()
driver.quit()

并且我已经在选项中添加了所有参数。 ps -aux |grep google-chrome 并终止我的 wsl 中的所有进程。 Google Chrome 100.0.4896.88 和 chrome-driver 100.0.4896.60 并且它们在环境路径中添加的相同目录中。

我会尝试使用更新版本的驱动程序。否则升级或降级您的版本以查看是否有任何这些工作。这个错误一般是因为不兼容

Google Chrome 100.0.4896.88chrome-driver 100.0.4896.60 完全在同步。

但是根据 documentation:

A common cause for Chrome to crash during startup is running Chrome as root user (administrator) on Linux. While it is possible to work around this issue by passing --no-sandbox flag when creating your WebDriver session, such a configuration is unsupported and highly discouraged. Please configure your environment to run Chrome as a regular user instead.


解决方案

删除以下参数:

  • --no-sandbox
  • --disable-gpu
  • --disable-dev-shm-usage
  • disable-infobars

并以 non-root 用户(non-administrator) 用户.

在 wsl1 中,人们不能使用 linux 版本的 chrome。所以只需使用 windows 版本 chrome.exe 和 chromdriver.exe。 我的问题通过简单的 mv chromdriver.exe chromdriver 解决了,因为 selenium 只能识别没有 '.exe'

的 chromdriver