gpt4 book ai didi

google-chrome - 通过docker的Selenium python库,Chrome错误无法启动:异常退出

转载 作者:行者123 更新时间:2023-12-02 20:47:30 24 4
gpt4 key购买 nike

我试图从基于miniconda / anaconda的docker容器中使用selenium库运行一些python脚本,但我不断收到此错误:selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally。我还对xvfb使用了python包装程序,以避免打开真正的Chrome窗口。

要重现此内容(从正在运行的docker容器中):

root@304ccd3bae83:/opt# python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> from selenium import webdriver
>>> from xvfbwrapper import Xvfb
>>>
>>> with Xvfb(width=1366, height=768) as xvfb:
... my_driver = webdriver.Chrome('/opt/chromedriver/2.33/chromedriver')
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/opt/conda/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__
desired_capabilities=desired_capabilities)
File "/opt/conda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 151, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/opt/conda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 240, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/opt/conda/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
self.error_handler.check_response(response)
File "/opt/conda/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.0-116-generic x86_64)

根据以下内容: https://sites.google.com/a/chromium.org/chromedriver/help/chrome-doesn-t-start似乎有人可能需要使用适用于所有用户的独立版本的Chrome,但是我不确定docker构建的工作方式,我猜想docker镜像是作为 root构建的,所有代码在内部以 root的身份执行,因此控制Chrome的其他用户应该不会有任何问题。

此Python代码在带有X Windows的普通Ubuntu笔记本电脑上可以正常工作。从运行的Docker容器中进行检查时,我需要仔细选择Chrome和chromedriver的版本:
root@304ccd3bae83:/opt# /opt/chromedriver/2.33/chromedriver --version
ChromeDriver 2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4)
root@304ccd3bae83:/opt# google-chrome-stable --version
Google Chrome 62.0.3202.75

最佳答案

这些选项有助于解决问题。

chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument("--disable-setuid-sandbox")

看到 Chrome failed to start: crashed时需要其中之一。

另外:使用 chrome-driver查找要杀死的PID,确保 ps aux | grep chrome-driver进程没有僵尸(来自以前的执行)。

切记,如果您正在使用Python multiprocessing库生成许多涉及他们自己的Chrome浏览器实例的进程,那么您将无法使用Docker(除非使用 supervisor之类的东西,否则它应该仅启动一个Python进程),因此您可能仍然会看到: selenium.common.exceptions.WebDriverException: Message: chrome not reachable(如果仍然尝试)。

关于google-chrome - 通过docker的Selenium python库,Chrome错误无法启动:异常退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com