Выполнение привязок Python Selenium WebDriver в Chrome - PullRequest
141 голосов
/ 24 ноября 2011

Я столкнулся с проблемой при работе с 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 с:

chromium --remote-shell-port=9222

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

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

www-client: chromium 15.0.874.121  
dev-lang:   python 2.7.2-r3 Selenium 2.11.1  
OS:         GNU/Linux Gentoo Kernel 3.1.0-gentoo-r1

Ответы [ 7 ]

130 голосов
/ 24 ноября 2011

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

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

Edit:

Да, похоже, что это ошибка в привязках 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()
104 голосов
/ 23 июня 2014

Для 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()
    
93 голосов
/ 20 января 2012

только для Mac OSX

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

brew install chromedriver

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

52 голосов
/ 23 сентября 2014

Для Windows

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

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

Теперь это должно работать:

from selenium import webdriver
driver = webdriver.Chrome()
23 голосов
/ 07 апреля 2013

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

1 голос
/ 24 июля 2017

Существует два способа запуска тестов Python Selenium в Google Chrome. Я рассматриваю 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()
0 голосов
/ 10 июня 2017

Для 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находится

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

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