首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器中的Selenium找不到chromedriver

Docker容器中的Selenium找不到chromedriver
EN

Stack Overflow用户
提问于 2021-05-11 21:57:16
回答 2查看 419关注 0票数 2

我需要将我的小Flask应用程序放入Docker容器中,然后检查我公司的客户安装了什么类型的Google标签。为此,我需要使用selenium-wire。你提供一个网站,然后你会得到一个json,告诉你安装了哪些标签(有点像http://gachecker.com/ )。现在,它在Flask应用程序上运行得很好。当我尝试将其放入Docker时,出现了问题,以下是我的docker脚本:

代码语言:javascript
复制
FROM python:3.9 WORKDIR /bziiit_checker_app

RUN pip install flask flask_restful requests BeautifulSoup4 selenium-wire undetected-chromedriver chromedriver-py

COPY ./app ./app

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

一旦它在Docker中并尝试运行它,我就会收到这样的消息

代码语言:javascript
复制
"selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH"

当chromedriver.exe文件不在工作目录中时,这是一个常见的问题。但事实就是如此。在创建虚拟环境时,我需要设置路径吗?如果需要,我该如何设置?再说一次,我擅长人工智能,不擅长应用程序开发。

我使用的是Python 3.9,使用的是Windows 10、Visual Studio Code和Flask

谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-18 18:04:20

在经历了几天的痛苦和磨难之后,我终于解决了这个问题,所以这里是我创建的Docker文件,它是为了让chromedriver在Docker容器中工作而创建的。

这在使用VS代码的Windows 10上有效

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

# Adding trusting keys to apt for repositories
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -

# Adding Google Chrome to the repositories
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'

# Updating apt to see and install Google Chrome
RUN apt-get -y update

# Magic happens
RUN apt-get install -y google-chrome-stable

# Installing Unzip
RUN apt-get install -yqq unzip

# Download the Chrome Driver
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/

# Set display port as an environment variable
ENV DISPLAY=:99

COPY ./app ./app
WORKDIR /app 

RUN pip install --upgrade pip

RUN pip install -r requirements.txt

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

然后,在你的脚本中,将这些参数添加到Chromedriver的选项中,否则它会给你一条错误消息,告诉你"Chromedriver已经异常退出“。

代码语言:javascript
复制
option = webdriver.ChromeOptions()

option.add_argument("--disable-gpu")
option.add_argument("--disable-extensions")
option.add_argument("--disable-infobars")
option.add_argument("--start-maximized")
option.add_argument("--disable-notifications")
option.add_argument('--headless')
option.add_argument('--no-sandbox')
option.add_argument('--disable-dev-shm-usage')

我希望这能帮你省去那些让我头疼的麻烦。

票数 2
EN

Stack Overflow用户

发布于 2021-05-11 22:01:20

您还必须在容器中安装chrome驱动程序和chrome

代码语言:javascript
复制
RUN add-apt-repository -y ppa:openjdk-r/ppa
RUN apt-get install -y openjdk-12-jre cron wget unzip

ARG CHROME_VERSION=78.0.3904.87-1
RUN wget -q -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 update -qqy \
    && apt-get -qqy install google-chrome-stable=$CHROME_VERSION \
    && rm /etc/apt/sources.list.d/google-chrome.list \
    && rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
        && sed -i 's/"$HERE\/chrome"/"$HERE\/chrome" --no-sandbox/g' /opt/google/chrome/google-chrome


ARG CHROME_DRIVER_VERSION=78.0.3904.70
RUN wget --no-verbose -O /tmp/chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip \
    && rm -rf /opt/chromedriver \
    && unzip /tmp/chromedriver_linux64.zip -d /opt \
    && rm /tmp/chromedriver_linux64.zip \
    && mv /opt/chromedriver /opt/chromedriver-$CHROME_DRIVER_VERSION \
    && chmod 755 /opt/chromedriver-$CHROME_DRIVER_VERSION \
    && ln -fs /opt/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67488276

复制
相关文章

相似问题

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