Запуск привязок Python Selenium WebDriver в Chrome

147

Я столкнулся с проблемой при работе с Selenium. Для моего проекта я должен использовать Chrome. Тем не менее, я не могу подключиться к этому браузеру после запуска его с Selenium.

По какой-то причине Selenium не может найти Chrome сам по себе. Вот что происходит, когда я пытаюсь запустить Chrome без указания пути:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome() # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 58, in start
    and read up at http://code.google.com/p/selenium/wiki/ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.                 Please download from http://code.google.com/p/selenium/downloads/list                and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'

Чтобы решить эту проблему, я включил путь Chromium в код, запускающий Chrome. Однако интерпретатору не удается найти сокет для подключения:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome('/usr/bin/chromium') # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 64, in start
    raise WebDriverException("Can not connect to the ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the ChromeDriver'

Я также попытался решить проблему, запустив Chrome с помощью:

хром -remote-Shell-Port = 9222

Однако это тоже не сработало.

PS. Вот некоторая информация о моей системе:

www-клиент: хром 15.0.874.121  
dev-lang: python 2.7.2-r3 Selenium 2.11.1  
ОС: GNU / Linux Gentoo Kernel 3.1.0-gentoo-r1
Akendo
источник
Я просто хотел сообщить вам, что «--remote-shell-port» не является допустимым параметром командной строки. Смотрите: peter.sh/experiment/chromium-command-line-switches ("--remote-debugging-port" будет правильным. Помните, что вам нужно закрыть все экземпляры chromium перед использованием этой опции. Т.е. создание новое окно в существующей сессии браузера не работает).
апреля

Ответы:

133

Необходимо убедиться, что автономный двоичный файл ChromeDriver (который отличается от двоичного файла браузера Chrome) находится либо в вашем пути, либо доступен в переменной среды webdriver.chrome.driver.

см. http://code.google.com/p/selenium/wiki/ChromeDriver для получения полной информации о том, как это происходит.

Редактировать:

Да, похоже, это ошибка в привязках Python при чтении двоичного файла chromedriver из пути или переменной окружения. Кажется, если chromedriver не находится на вашем пути, вы должны передать его в качестве аргумента конструктору.

import os
from selenium import webdriver

chromedriver = "/Users/adam/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")
driver.quit()
Адам Гоше
источник
Извините, забудьте упомянуть об этом. Я получил эту ссылку.
Akendo
2
Пробовал Chromedriver вместо Firefox Webdriver .. почти в 3 раза больше производительности ..
UberNeo
4
Кроме того , хочу отметить , что аргумент , передаваемый конструктору путь к ChromeDriver двоичная и не каталог , содержащий исполняемый файл ChromeDriver (неиспользуемый за последнее полчаса выяснить , что происходит неправильно).
TheRookierLearner
107

Для Linux

  1. Проверьте, что вы установили последнюю версию chrome brwoser-> chromium-browser -version
  2. Если нет, установите последнюю версию Chrome sudo apt-get install chromium-browser
  3. получить соответствующую версию драйвера Chrome здесь
  4. Разархивируйте chromedriver.zip
  5. Переместить файл в /usr/binкаталогsudo mv chromedriver /usr/bin
  6. Перейти к /usr/bin каталогcd /usr/bin
  7. Теперь вам нужно запустить что-то вроде sudo chmod a+x chromedriver чтобы пометить его как исполняемый.
  8. наконец, вы можете выполнить код.

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("http://www.google.com")
    print driver.page_source.encode('utf-8')
    driver.quit()
    display.stop()
Vicky
источник
1
Очень хорошо! Одно замечание: мне удалось заставить это работать только с 32-битным хромедрайвером, хотя я использую 64-битный linux.
Имран
В Ubuntu (14.04) вы можете установить пакет chromium-chromdriver (например, с помощью apt-get) и добавить путь к файлу chromedriver в переменную оболочки PATH PATH = "$ {PATH}": / usr / lib / chromium-browser / Если вы добавите это в свой .bashrc, вам не нужно будет устанавливать его каждый раз, когда вы хотите протестировать с селеном.
Арпад Хорват
1
на самом деле этот ответ должен иметь гораздо больше голосов. в основном это способ для каждого водителя, как гекодривер.
holzkohlengrill
Моя версия браузера Chromium упоминается как (Chromium 67.0.3396.99 Построена на Ubuntu, работает на Ubuntu 16.04), но ссылка имеет только версии 2.0-2.9. Нужна помощь.
Вайбхав Махешвари
93

Только Mac OSX

Более простой способ начать работу (при условии, что у вас уже есть установленный homebrew , и в противном случае вам следует сначала сделать это и позволить homebrew сделать вашу жизнь лучше), просто выполнить следующую команду:

brew install chromedriver

Это должно поставить хромедривер на вашем пути, и вы должны быть готовы.

Яхин
источник
Это не может работать на Mac. selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
wyx
1
@wyx Возможно, ваша среда настроена неправильно. Попробуйте запустить brew doctorи посмотреть, если что-нибудь найдет.
Jachin
2
Это один из тех теплых и нечетких моментов, когда вы просто счастливы, что у вас есть Mac. Так легко.
Пользователь
СЕРДЦЕ! Я люблю варево
RHSMan
52

Для окон

Загрузите ChromeDriver по этой прямой ссылке ИЛИ получите последнюю версию с этой страницы .

Вставьте chromedriver.exeфайл в свойC:\Python27\Scripts папку.

Это должно работать сейчас:

from selenium import webdriver
driver = webdriver.Chrome()
Абдул Маджид
источник
23

Для окон, пожалуйста, chromedriver.exeпоместите под<Install Dir>/Python27/Scripts/

user2253967
источник
а куда положить в убунту? int /usr/lib/или где-то еще?
Гаурав Джейн
Наличие файла PATHбыло недостаточно, положить его туда, /Scripts/где ride.pyработает.
Qwerty
1

В Google Chrome есть 2 способа запустить тесты Selenium Python. Я рассматриваю Windows (Windows 10 в моем случае):

Предварительное условие: загрузите последнюю версию драйвера Chrome по адресу : https://sites.google.com/a/chromium.org/chromedriver/downloads.

Способ 1:

i) Извлеките загруженный zip-файл в каталог / папку по вашему выбору
ii) Установите путь к исполняемому файлу в вашем коде, как показано ниже:

self.driver = webdriver.Chrome(executable_path='D:\Selenium_RiponAlWasim\Drivers\chromedriver_win32\chromedriver.exe')

Способ 2:

i) Просто вставьте chromedriver.exe в / Python / Scripts / (в моем случае папка была: C: \ Python36 \ Scripts)
ii) Теперь напишите простой код, как показано ниже:

self.driver = webdriver.Chrome()
Рипон Аль Васим
источник
-1

Для Windows IDE:

Если ваш путь не работает, вы можете попытаться добавить его chromedriver.exeв свой проект, как в этой структуре проекта.

chromedriver.exe

Затем вы должны загрузить chromedriver.exeв свой основной файл. Что касается меня, я загрузил driver.exeв driver.py.

def get_chrome_driver():
return webdriver.Chrome("..\\content\\engine\\chromedriver.exe",
                            chrome_options='--no-startup-window')

..означает driver.py'sверхний каталог

.означает каталог, в котором driver.pyнаходится

Надеюсь, это будет полезно.

tyrantqiao
источник