如何修复Dockerfile中的ChromeDriver和Google Chrome之间的版本不匹配

rn0zuynd  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(119)

我是Docker的新手。我已经用它来创建我的项目的图像。当我尝试使用Dockerfile构建图像时,我在其中安装了所需的库以及Google Chrome和ChromeDriver,我收到一条错误消息,指示ChromeDriver与Google Chrome之间不匹配。
下面是Dockerfile的一部分:

# install google chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
RUN apt-get -y update
RUN apt-get install -y google-chrome-stable

# install chromedriver
RUN apt-get install -yqq unzip
RUN wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/

一旦启动了docker镜像,每当我尝试执行项目的脚本时,我都会收到以下错误消息:

> selenium.common.exceptions.SessionNotCreatedException: Message:
> session not created: This version of ChromeDriver only supports Chrome
> version 114 Current browser version is 116.0.5845.110 with binary path
> /opt/google/chrome/google-chrome Stacktrace:
> #0 0x56061f6b04e3 <unknown>
> #1 0x56061f3dfc76 <unknown>
> #2 0x56061f40d04a <unknown>
> #3 0x56061f4084a1 <unknown>
> #4 0x56061f405029 <unknown>
> #5 0x56061f443ccc <unknown>
> #6 0x56061f44347f <unknown>
> #7 0x56061f43ade3 <unknown>
> #8 0x56061f4102dd <unknown>
> #9 0x56061f41134e <unknown>
> #10 0x56061f6703e4 <unknown>
> #11 0x56061f6743d7 <unknown>
> #12 0x56061f67eb20 <unknown>
> #13 0x56061f675023 <unknown>
> #14 0x56061f6431aa <unknown>
> #15 0x56061f6996b8 <unknown>
> #16 0x56061f699847 <unknown>
> #17 0x56061f6a9243 <unknown>
> #18 0x7f72cb9de044 <unknown>

下面是我在代码中初始化Chrome的方法:

from selenium import webdriver
....
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=options)

现在我知道http://chromedriver.storage.googleapis.com不再受支持,但我如何修改Dockerfile以确保始终获得兼容的Chrome和ChromeDriver版本?

jdg4fx2g

jdg4fx2g1#

对于那些有同样问题的人,我只是使用官方的Selenium Docker镜像来解决它,而不是单独安装Chrome和ChromeDriver。
我从我的Dockerfile中删除了Chrome和ChromeDriver安装,并添加了这一行:

# Use an official Selenium Docker image that provides compatible Chrome and ChromeDriver versions
FROM selenium/standalone-chrome:latest

在这种情况下,官方的Selenium Docker镜像已经包含了相互兼容的必要的Chrome和ChromeDriver版本。

相关问题