【问题标题】:Selenium run on alpine 3.6 containerSelenium 在 alpine 3.6 容器上运行
【发布时间】:2020-01-16 22:50:04
【问题描述】:

我正在尝试在 alpine 3.6 容器 (FROM alpine:3.6) 上运行 Selenium

我在容器外壳中的尝试:

apk update
apk add python3
pip3 install -U selenium
apk add chromium
apk add chromium-driver

并运行以下python(使用python3):

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options, executable_path=r'usr/bin/chromedriver') # Thrown an exception

并得到以下异常:

selenium.common.exceptions.WebDriverException:消息:未知错误:Chrome 无法启动:崩溃 (驱动信息:chromedriver=2.27 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 5.0.0-23-generic x86_64)

selenium=3.141.0
chromium=57.0.2987.133
chromeDriver=2.27

我该如何解决?

【问题讨论】:

  • 请发布更多信息,如 chrome 浏览器版本和 selenium 版本。似乎这是一个兼容问题,您需要有兼容版本的 webdriver。您可以查看以下链接以检查哪些 chrome 驱动程序支持chrome 版本chromedriver.chromium.org/downloads
  • @KunduK,查看我对硒、铬版本的编辑
  • 我建议您将 chrome 驱动程序和浏览器都升级到最新版本。您使用的版本似乎很旧。我没有在那个平台上工作,所以不知道如何升级。但是你可能知道如何升级,看看你能不能破解它。

标签: python selenium selenium-chromedriver alpine


【解决方案1】:

通过以下步骤解决(使用 alpine3.6):

更新存储库:

echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" > /etc/apk/repositories
echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories

Apk 更新:

apk update

安装 chromium 和 chromedriver:

apk add chromium
apk add chromium-chromedriver

安装python3、selenium:

apk add python3
pip3 install -U selenium

以下python 代码对我有用:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)
driver.get('http://example.com')

【讨论】:

    【解决方案2】:

    这是我为使 selenium 与 alpine3.9 和 firefox 一起工作所做的,希望这会有所帮助

    我花了很长时间才找出完美的版本

    geckodriver 必须是 0.21.0 版本

    Dockerfile

    FROM python:alpine3.9
    RUN apk update
    RUN apk add firefox-esr
    RUN apk add xvfb
    RUN pip install -r requirements.txt
    

    requirements.txt

    selenium==3.11
    pyvirtualdisplay==0.2.1
    

    python 代码

    from selenium.webdriver.firefox.options import Options
    from pyvirtualdisplay import Display
    
    display = Display(visible=0, size=(800, 600))
    display.start()
    driver = webdriver.Firefox()
    

    【讨论】:

    • 你需要 0.21.0 我想github.com/mozilla/geckodriver/releases/tag/v0.21.0,你正在使用 pyvirtualdisplay?
    • 你需要为它指定路径,你可以在 webdriver.Firefox 调用中使用这个参数 executable_path=GECKO_DRIVER_PATH 来做到这一点,GECKOD_DRIVER_PATH 是一个字符串
    • 这对你有用吗?如果是,请将答案标记为正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多