Скрипт осколка Python завершается сбоем после обновления до Debian Buster с исключением chromedriver

Недавно я обновил свою малину 3 до Debian Buster из Stretch. У меня было несколько скриптов на Python, использующих splinter, selenium и chromedriver. После обновления скрипт не работает. Пытаясь устранить неполадки, я создал простой скрипт, который работает так, как ожидалось:

    from selenium import webdriver
    from splinter import Browser

    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--headless")
    driver = webdriver.Chrome(options=chrome_options)
    driver.get('https://python.org')
    html = driver.page_source
    print(html)
    driver.quit()

Немного изменив скрипт, чтобы использовать splinter:

    from selenium import webdriver
    from splinter import Browser

    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--headless")
    with Browser('chrome', headless=True, options=chrome_options) as browser:
        browser.visit('https://python.org')
        print(browser.html)

дает:

Traceback (most recent call last):
  File "sel.py", line 8, in <module>
    print(browser.html)
  File "/usr/local/lib/python3.7/dist-packages/splinter/driver/webdriver/__init__.py", line 201, in html
    return self.driver.page_source
  File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 679, in page_source
    return self.execute(Command.GET_PAGE_SOURCE)['value']
  File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
  (Session info: headless chrome=74.0.3729.157)
  (Driver info: chromedriver=74.0.3729.157 (7b16107ab85c5364cdcd0b2dea2539a1f2dc327a-refs/branch-heads/3729@{#998}),platform=Linux 4.19.66-v7+ armv7l)

Вот дополнительная информация:

pip3 list |egrep "splinter|selenium"
selenium            3.141.0
splinter            0.11.0
apt-show-versions chromium-browser chromium-chromedriver python3
chromium-browser:armhf/buster 74.0.3729.157-rpt5 uptodate
chromium-chromedriver:armhf/buster 74.0.3729.157-rpt5 uptodate
python3:armhf/buster 3.7.3-1 uptodate
ls -l `which chromedriver`
-rwxr-xr-x 1 root root 10870000 Jul 10 08:27 /usr/bin/chromedriver
chromedriver --version
ChromeDriver 74.0.3729.157 (7b16107ab85c5364cdcd0b2dea2539a1f2dc327a-refs/branch-heads/3729@{#998})

Что должно произойти, чтобы сплинтер снова заработал?


person Bryan    schedule 05.09.2019    source источник


Ответы (1)


Поэтому, продолжив исследования, я обнаружил, что лучший способ приблизиться к этому — понизить версии, которые я установил. Погуглив, я запустил apt-cache madison chromium-chromedriver chromium-browser, чтобы попытаться принудительно скачать, но в разделе buster нет предыдущей версии.

Затем я снова добавил источник deb http://archive.raspberrypi.org/debian/ stretch main в /etc/apt/sources.list и запустил apt-get update

Затем я повторно запустил apt-cache madison chromium-chromedriver chromium-browser, дав:

chromium-chromedriver | 74.0.3729.157-rpt5 | http://archive.raspberrypi.org/debian buster/main armhf Packages
chromium-chromedriver | 72.0.3626.121-0+rpt4 | http://archive.raspberrypi.org/debian stretch/main armhf Packages
chromium-browser | 74.0.3729.157-rpt5 | http://archive.raspberrypi.org/debian buster/main armhf Packages
chromium-browser | 72.0.3626.121-0+rpt4 | http://archive.raspberrypi.org/debian stretch/main armhf Packages

После пары попыток получить соответствующие зависимости я запустил apt-get install chromium-chromedriver=72.0.3626.121-0+rpt4 chromium-browser=72.0.3626.121-0+rpt4 chromium-codecs-ffmpeg-extra=72.0.3626.121-0+rpt4 chromium-browser-l10n=72.0.3626.121-0+rpt4

Убедившись, что мои сценарии снова запускаются, я хотел пометить эти пакеты, чтобы они не обновлялись apt-mark hold chromium-chromedriver chromium-browser chromium-codecs-ffmpeg-extra chromium-browser-l10n

В какой-то момент я могу снова попробовать Мэдисон и посмотреть, есть ли более новая версия, и развернуть пакеты, чтобы увидеть, работает ли новая версия, но, похоже, сейчас я в порядке.

person Bryan    schedule 17.09.2019
comment
Большое спасибо! У меня была точно такая же проблема. Теперь его нет! Благодарю вас! - person Jakub Bláha; 24.09.2019
comment
Итак, я почувствовал себя смелым, я попробовал apt-mark unhold chromium-chromedriver chromium-browser chromium-codecs-ffmpeg-extra chromium-browser-l10n, а затем запустил apt-upgrade. Он обновился до 78.X и теперь корректно работает с последней версией. - person Bryan; 17.02.2020