Использование хромового драйвера селена и python с хромом на Linux - PullRequest
0 голосов
/ 13 февраля 2020

Я использую Arch Linux с текущей версией браузера Chromium (80.0.3987.100-1) и все пакеты полностью обновлены.

У меня есть сценарий python, для которого требуется chromedriver . инструкции там говорят,

  • ChromeDriver - это отдельный исполняемый файл
  • Помогите WebDriver найти загруженный исполняемый файл ChromeDriver, указав путь
  • [python ] driver = webdriver. Chrome ('/ path / to / chromedriver')

В хром , включен chromedriver (по крайней мере в Arch, и, вероятно, во всех дистрибутивах). ):

/usr/lib/chromium/chromedriver

У меня простой вопрос. При использовании хрома необходимо ли указывать путь к chromedriver , как в примере ниже?

driver = webdriver.Chrome(executable_path="/usr/lib/chromium/chromedriver",options=chromeOptions)

Из инструкций видно, что если путь не указан явно, он будем искать. Но я хочу sh, чтобы избежать поиска по нескольким путям, и я хочу избежать любой вероятности ошибок во время выполнения из-за того, что chromedriver не найден.

Я бы предположил, что поскольку chromedriver и chromium разрабатываются одной и той же командой и упакованы вместе, я могу избежать любых проблем без необходимости жесткого кодирования пути. Я также посмотрю, что работает в моей системе, но я ищу отзывы, основанные на реальном реальном опыте. Я не хочу сталкиваться с ошибкой, связанной с этим при развертывании. Мой вопрос просто может кто-нибудь подтвердить, что это будет работать правильно в условиях, указанных выше, без пути?

РЕДАКТИРОВАТЬ: В ответ на комментарий: Это, кажется, документация:

https://selenium.dev/selenium/docs/api/py/webdriver_chrome/selenium.webdriver.chrome.service.html

Однако в нем не указано, какие типы исключений он создает. Кроме того, добавление обработки исключений не относится к моему вопросу. В документации говорится, что этот метод будет искать, если путь не указан. Я хочу знать, является ли первое место поиска /usr/lib/chromium/chromedriver. Документация, которую я нашел, также не касается этого.

Я знаю, что это очень простой вопрос. Может быть, это слишком просто? Если я смогу найти исходный код, я думаю, что смогу прочитать его и узнать ответ. Однако я частично спросил, чтобы мне не пришлось часами пытаться найти ответ для себя.

1 Ответ

1 голос
/ 14 марта 2020

Я не имею права это делать, но при проверке исходного кода github для селена можно увидеть, что значение по умолчанию для executable_path (которое, кстати, в их репозитории устарело) просто chromedriver ( Строка 34 в веб-драйвере. Chrome).

Затем он просто запускает эту команду для подпроцесса . Это означает, что будут проходить только пути в переменной окружения $PATH. Selenium не выполняет никакого поиска самостоятельно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...