程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何编写我的 Dockerfile 以包含 chromedriver?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何编写我的 Dockerfile 以包含 chromedriver??

开发过程中遇到如何编写我的 Dockerfile 以包含 chromedriver?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何编写我的 Dockerfile 以包含 chromedriver?的解决方法建议,希望对你解决如何编写我的 Dockerfile 以包含 chromedriver?有所启发或帮助;

我是 Dockerfile 和 SELEnium 的新手。我正在使用 SELEnium 进行网络抓取并截取屏幕截图。我正在尝试对它进行泊坞化。我的这个问题似乎在几个问题中得到了回答,但并没有解决我的错误。仅供参,我使用的是 windows 笔记本电脑。

屏幕截图代码在我的本地机器上工作,但 dockerfile 似乎给了我错误。

我正在尝试使用此版本的 Chromedriver=89.0.4389.82

这是我更新的 Dockefile,

FROM python:3.6

RUN pip install --upgrade pip && pip install pytest && pip install pytest-mock && pip install pytest-smtp && pip install mock \
pip install schedule && pip install SELEnium && pip install SELEnium-Screenshot && pip install python-dateutil

# For running code
copY src/screenshotcode.py /

RUN wget -q -O - https://dl-ssl.Google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb http://dl.Google.com/linux/Chrome/deb/ stable main" >> /etc/apt/sources.List.d/Google.List
RUN apt-get update -y
RUN apt-get install -y Google-Chrome-stable
RUN apt-get install libxi6 libgconf-2-4 -y

ENV ChromeDRIVER_VERSION 2.19
ENV ChromeDRIVER_DIR /Chromedriver
RUN mkdir -p $ChromeDRIVER_DIR

# Download and install Chromedriver
RUN wget -q --conTinue -P $ChromeDRIVER_DIR "http://Chromedriver.storage.GoogleAPIs.com/$ChromeDRIVER_VERSION/Chromedriver_linux64.zip"
RUN unzip $ChromeDRIVER_DIR/Chromedriver* -d $ChromeDRIVER_DIR

# Put Chromedriver into the PATH
ENV PATH $ChromeDRIVER_DIR:$PATH

CMD [ "python","screenshotcode.py" ]

我的截图代码,

import time
from Screenshot import Screenshot_ClipPing
from SELEnium.common.exceptions import NoSucHelementexception
from SELEnium.webdriver import Chrome
from SELEnium.webdriver.common.by import By
from SELEnium.webdriver.support.ui import webdriverwait
from SELEnium.webdriver.support import expected_conditions as EC
from SELEnium.webdriver.Chrome.options import Options
from email_it import email_it
from environmental_variables import environmental_variables
from error_alert_email import error_alert_email
from SELEnium import webdriver

def screenshot():

    ob=Screenshot_ClipPing.Screenshot()
    
    Chrome_options = Options()
    
    Chrome_options.add_argument('--start-maximized')    
    Chrome_options.add_argument('--start-fullscreen')
    Chrome_options.add_argument('--no-sandBox')
    Chrome_options.add_argument('--headless')
    Chrome_options.add_argument('--disable-gpu')
    
    driver = webdriver.Chrome(executable_path = r"C:\Users\me\documents\Projects\chromedriver.exe")

    print('taking screenshot...')
    img_url=ob.full_Screenshot(driver,path = path,image_name = label)

    print('closing driver...')    
    driver.close()

screenshot()

@H_772_21@编辑:我收到以下错误

PS C:\Users\me\documents\Projects\> docker run screenshot
file "scheduler.py",line 16,in <module>
    from screenshot import screenshot
  file "/screenshotcode.py",line 72,in <module>
    screenshot()
  file "/screenshotcode.py",line 32,in screenshot
    driver = webdriver.Chrome()
  file "/usr/local/lib/python3.6/site-packages/SELEnium/webdriver/Chrome/webdriver.py",line 81,in __init__
    desired_capabilitIEs=desired_capabilitIEs)
  file "/usr/local/lib/python3.6/site-packages/SELEnium/webdriver/remote/webdriver.py",line 157,in __init__
    self.start_session(capabilitIEs,browser_profilE)
  file "/usr/local/lib/python3.6/site-packages/SELEnium/webdriver/remote/webdriver.py",line 252,in start_session
    response = self.execute(Command.NEW_SESSION,parameters)
  file "/usr/local/lib/python3.6/site-packages/SELEnium/webdriver/remote/webdriver.py",line 321,in execute
    self.error_handler.check_response(responsE)
  file "/usr/local/lib/python3.6/site-packages/SELEnium/webdriver/remote/errorhandler.py",@R_114_5450@2,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.19.346067 (6abd8652f8bc7a1d825962003ac88ec6a37a82f1),platform=linux 5.4.72-microsoft-standard-WSL2 x86_64)

解决方法

您在代码中设置了 chromedriver 所在的位置:

driver = webdriver.Chrome(executable_path = r"C:\Users\me\Documents\Projects\chromedriver.exe")

但是在您的 dockerfile 中,它位于 /usr/local/bin/chromedriver 所以你需要把你的代码改成

driver = webdriver.Chrome(executable_path = "/usr/local/bin/chromedriver")

大佬总结

以上是大佬教程为你收集整理的如何编写我的 Dockerfile 以包含 chromedriver?全部内容,希望文章能够帮你解决如何编写我的 Dockerfile 以包含 chromedriver?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: