TransWikia.com

Скрипт на selenium не видит chromedriver

Stack Overflow на русском Asked by ASX-4F on November 13, 2021

В процессе переноса скрипта с heroku на сервер с ubuntu столкнулся с проблемой, что скрипт не видит chromedriver.

Итак. Устанавливал согласно этой инструкции, однако вместо Chromium ставил обычный Chrome. Также нашел тут похожий вопрос, но ответ не помог.

Посмотрел, что есть в PATH и засунул туда chromedriver.

Пруфы:

(venv) root@ip-172-31-39-163:/home/sla-for-anton-bot# echo $PATH
/home/sla-for-anton-bot/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

(venv) root@ip-172-31-39-163:/home/sla-for-anton-bot# find / -name chromedriver
/usr/local/bin/chromedriver
/usr/bin/chromedriver
/home/sla-for-anton-bot/chromedriver

Однако при выполнении выдает следующее:

Traceback (most recent call last):
  File "sla_parser.py", line 121, in <module>
    create_list()
  File "sla_parser.py", line 103, in create_list
    brw = webdriver.Chrome(chrome_options=chrome_options)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
    self.service.start()
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/common/service.py", line 98, in start
    self.assert_process_still_running()
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/common/service.py", line 111, in assert_process_still_running
    % (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127

Собственно кусок кода:

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
import os

def create_list():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.binary_location = os.environ.get('/usr/bin/chromedriver')
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--no-sandbox')

#    brw = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=chrome_options)
    brw = webdriver.Chrome(chrome_options=chrome_options)
    brw.get(url)

Пути в chrome_options.binary_location и brw = webdriver.Chrome(executable_path=) пробовал подставлять разные, в разные места PATH, где лежит драйвер, относительные, абсолютные, в виртуальном окружении, без него – все бесполезно.

Прошу совета, что и где я сделал не так.

One Answer

Проблема оказалась в отсутствующей библиотеке libgconf-2-4. Шаги по обнаружению проблемы.

  1. Смотрим на ошибку, понимаем что драйвер запускается, но падает с какой-то ошибкой  Service chromedriver unexpectedly exited. Status code was: 127
  2. Запустить драйвер без опций
  3. Запустить из терминала /usr/bin/chromedriver и увидеть более подробную ошибку error while loading shared libraries: libgconf-2.so.4
  4. Установить библиотеку apt-get update && apt-get install libgconf-2-4

Answered by rusnasonov on November 13, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP