chromedriver 不再运行,因此 ChromeDriver 假设 Chrome 通过 Python 使用 Selenium 发生崩溃错误

问题描述 投票:0回答:2

在开始之前:我知道有十亿篇关于 Selenium 不起作用的帖子,以及各种解决方案可供尝试。我相信我已经尝试了一切,但如果我遗漏了什么,请原谅我。我正在用头撞墙,希望得到帮助。

以下是我采取的一些步骤:

我下载了 selenium 的 chromedriver(Ubuntu、Python),并使用

chmod 755
chmod 777
使驱动程序可执行。之后,我用
./chromedriver
启动了chromedriver。

我尝试了 Selenium 的各种选项,包括手动添加 chromedriver 运行的端口

from selenium import webdriver

options = webdriver.ChromeOptions()
options.binary_location = "/home/myname/projects/myproject/chromedriver"
options.add_argument("--remote-debugging-port=9515")
chrome_driver_binary = '/home/myname/projects/myproject/chromedriver'
driver = webdriver.Chrome(chrome_driver_binary, options = options)
driver.get('http://www.ubuntu.com/')

我尝试过其他帖子中建议的选项,如下所示:

options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--disable-setuid-sandbox")

我已确保我使用的 chromedriver 与我的 Chrome 版本兼容。

似乎没有任何效果。我不断收到此错误:

WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
  (chrome not reachable)
  (The process started from chrome location /home/myname/projects/myproject/chromedriver is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

我真诚地感谢其他人对这个问题的解释。

python selenium google-chrome selenium-webdriver selenium-chromedriver
2个回答
3
投票

您需要注意以下几件事:

  • options.binary_location
    :指的是 二进制位置,如果 Google Chrome 未安装在默认位置,则使用该位置。请参阅:WebDriverException:未知错误:对于旧版本的 Google Chrome,无法在 Python 中找到带有 Selenium 的 Chrome 二进制错误

  • --remote-debugging-port
    :如果您不是远程调试,则可以安全地删除此参数。

  • chrome_driver_binary
    :指的是 ChromeDriver 在系统中的绝对位置。

  • webdriver.Chrome(chrome_driver_binary, options = options)
    :此外,您可能想添加 key executable_path,如下所示:

    chrome_driver_binary = '/home/myname/projects/myproject/chromedriver'
    driver = webdriver.Chrome(executable_path=chrome_driver_binary, options = options)
    driver.get('http://www.ubuntu.com/')
    
  • --no-sandbox
    --headless
    --disable-dev-shm-usage
    --disable-setuid-sandbox
    等是可选设置,您可能不需要启动。

启动Selenium驱动的ChromeDriver启动浏览上下文的最小代码块可以是:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
driver = webdriver.Chrome(executable_path='/home/myname/projects/myproject/chromedriver', options=options)
driver.get("http://www.ubuntu.com/")

Chrome 在启动期间崩溃的一个常见原因是在 Linux 上以

root
用户 (
administrator
) 身份运行 Chrome。虽然可以通过在创建 WebDriver 会话时传递
--no-sandbox
标志来解决此问题,但此类配置不受支持且强烈建议不要这样做。您需要配置环境才能以普通用户身份运行 Chrome。


参考文献

您可以在以下位置找到一些相关的详细讨论:


0
投票

我费尽心思在我的系统上启动 Chrome 浏览器,但最终以下代码在 Windows 11 上对我有用,从这次崩溃中恢复并启动 Chrome 浏览器:

from selenium.webdriver.chrome.options import Options
from selenium import webdriver

chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
driver = webdriver.Chrome(options=chrome_options)

driver.close()

注意:

  1. 我想看到浏览器打开,所以故意跳过无头选项。
  2. 此代码启动了默认的系统chrome浏览器。
© www.soinside.com 2019 - 2024. All rights reserved.