在 Python 中使用 chromedriver_autoinstaller 运行 selenium 时出现问题

Posted

技术标签:

【中文标题】在 Python 中使用 chromedriver_autoinstaller 运行 selenium 时出现问题【英文标题】:Problems when running selenium with chromedriver_autoinstaller in Python 【发布时间】:2022-01-22 19:55:42 【问题描述】:

我有以下问题。我想使用 chromedriver_autoinstaller 在我的 Ubuntu 上运行 chromium。我的代码是:

from selenium import webdriver
import chromedriver_autoinstaller


chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                      # and if it doesn't exist, download it automatically,
                                      # then add chromedriver to path
options = webdriver.ChromeOptions()

driver = webdriver.Chrome(options = options)
driver.get("http://www.python.org")

但是想要的网址http://www.python.org打不开,我只是在浏览器中看到data:,

我尝试添加一些选项,但没有帮助:

from selenium import webdriver
import chromedriver_autoinstaller

chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                      # and if it doesn't exist, download it automatically,
                                      # then add chromedriver to path
options = webdriver.ChromeOptions()

options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument('--remote-debugging-port=9222')

driver = webdriver.Chrome(options = options)
driver.get("http://www.python.org")

完整的追溯:

Traceback (most recent call last):
  File "/usr/lib/python3.8/code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 14, in <module>
  File "/home/vojtam/Desktop/greads_scrape/venv/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "/home/vojtam/Desktop/greads_scrape/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/vojtam/Desktop/greads_scrape/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/vojtam/Desktop/greads_scrape/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/vojtam/Desktop/greads_scrape/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist

你知道这里有什么问题吗?

我发现了这个问题,但对我没有帮助: WebDriverException: unknown error: DevToolsActivePort file doesn't exist while trying to initiate Chrome Browser

unknown error: DevToolsActivePort file doesn't exist error while executing Selenium UI test cases on ubuntu

Tests fail immediately with unknown error: DevToolsActivePort file doesn't exist when running Selenium grid through systemd

【问题讨论】:

用完整的错误堆栈跟踪更新问题。 @DebanjanB 查看更新 你为什么要使用--no-sandbox--disable-dev-shm-usage,我可以看到你使用用户配置文件vojtam @DebanjanB 我在第二个例子中试过这个。首先,我没有使用任何选项,正如您在我的问题中看到的那样。 【参考方案1】:

问题是 Docker 在 selenium 中运行 chrome 时需要 chrome_options.add_argument("--headless")

【讨论】:

以上是关于在 Python 中使用 chromedriver_autoinstaller 运行 selenium 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中执行 chromedriver 时出错

Selenium with Python - Chromedriver 必须在 PATH 中

使用 Selenium Python 和 chromedriver 截取整页截图

Python Selenium ChromeDriver不等待页面加载

防止 ChromeDriver 保存密码提示 - Selenium Python

将 chromedriver 与 selenium/python/ubuntu 一起使用