首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Docker容器中找不到Chromedriver可执行文件路径

在Docker容器中找不到Chromedriver可执行文件路径
EN

Stack Overflow用户
提问于 2021-09-02 04:34:44
回答 3查看 1.8K关注 0票数 3

我已经用下面的docker文件创建了一个Docker镜像。它安装了最新版本的Google Chrome和chrome驱动程序。以及其他pip包。

Dockerfile

代码语言:javascript
复制
FROM python:3.9

# Install Chrome WebDriver
RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
    mkdir -p /opt/chromedriver-$CHROMEDRIVER_VERSION && \
    curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip && \
    unzip -qq /tmp/chromedriver_linux64.zip -d /opt/chromedriver-$CHROMEDRIVER_VERSION && \
    rm /tmp/chromedriver_linux64.zip && \
    chmod +x /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver && \
    ln -fs /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver /usr/local/bin/chromedriver

# Install Google Chrome
RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \
    apt-get -yqq update && \
    apt-get -yqq install google-chrome-stable && \
    rm -rf /var/lib/apt/lists/*


COPY requirements.txt .

RUN pip install -r requirements.txt

WORKDIR /seltesting

COPY ./app ./app

CMD ["python", "./app/main.py"]

chromedriver.exe文件在容器中,就像我在命令行界面中找到的一样。它位于目录'/usr/local/bin/chromedriver‘中。

python代码

代码语言:javascript
复制
driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')

我使用venv,因为我还使用flask来创建一个使用chrome驱动程序的微服务。这会造成问题吗?

任何协助将非常感谢,因为我已经被困在这很长一段时间。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-10 01:48:50

我已经找到问题了,你需要把所有的python文件都添加到Dockerfile中。请找到镜像上安装Chromedriver和Chrome的Dockerfile和容器内chromedriver的默认路径。

Dockerfile

代码语言:javascript
复制
FROM python:3.9

ADD /app/main.py .
ADD /app/connectdriver.py .

# Install Chrome WebDriver
RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
    mkdir -p /opt/chromedriver-$CHROMEDRIVER_VERSION && \
    curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip && \
    unzip -qq /tmp/chromedriver_linux64.zip -d /opt/chromedriver-$CHROMEDRIVER_VERSION && \
    rm /tmp/chromedriver_linux64.zip && \
    chmod +x /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver && \
    ln -fs /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver /usr/local/bin/chromedriver

# Install Google Chrome
RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \
    apt-get -yqq update && \
    apt-get -yqq install google-chrome-stable && \
    rm -rf /var/lib/apt/lists/*

COPY requirements.txt .

RUN pip install -r requirements.txt

WORKDIR /seleniumtesting

COPY ./app ./app


CMD ["python","./app/main.py"]

python驱动程序脚本

代码语言:javascript
复制
driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
票数 1
EN

Stack Overflow用户

发布于 2021-09-02 04:57:58

在Python-Selenium中,我不会传递chromedriver路径,而是使用自动安装程序,这样它就不会在这种情况下失败。

chromedriver-自动安装程序

自动下载并安装支持当前安装的chrome版本的chromedriver。此安装程序支持LinuxMacOSWindows operating systems.

安装

代码语言:javascript
复制
pip install chromedriver-autoinstaller

用法

只需在要使用chromedriver的模块中输入import chromedriver_autoinstaller即可。

示例

代码语言:javascript
复制
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

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title

结论:

如果你在上面看到,我没有传递任何路径,而只是,chromedriver_autoinstaller.install()前面的driver = webdriver.Chrome()应该可以帮助你解决这个问题。

Official Reference link

票数 0
EN

Stack Overflow用户

发布于 2021-09-02 08:15:06

确保您提供的chrome驱动程序的路径是正确的。

然后:

代码语言:javascript
复制
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(executable_path = "PATH/to/chromedriver", options = chrome_options)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69024209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档