2015-02-03 3 views
2

Я запускаю OS X 10.9.4 на своем ноутбуке с Chrome 40.0.2214.94 и Selenium 2.44.0, который я установил для Python 2.7 с помощью easy_install. Мой код это основной код с селеном пошаговом:Chrome Драйвер должен быть доступен в ошибке пути на Mac

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Chrome() 
driver.get("http://www.python.org") 
assert "Python" in driver.title 
elem = driver.find_element_by_name("q") 
elem.send_keys("pycon") 
elem.send_keys(Keys.RETURN) 
assert "No results found." not in driver.page_source 
driver.close() 

Но когда я запускаю это я получаю исключение:

Traceback (most recent call last): 
    File "/Users/masongardner/Desktop/Selenium_tester.py", line 17, in <module> 
driver = webdriver.Chrome('/path/to/chromedriver') # Optional argument, if not specified will search path. 
    File "/Library/Python/2.7/site-packages/selenium-2.44.0-py2.7.egg/selenium/webdriver/chrome/webdriver.py", line 59, in __init__ 
self.service.start() 
    File "/Library/Python/2.7/site-packages/selenium-2.44.0-py2.7.egg/selenium/webdriver/chrome/service.py", line 66, in start 
    "ChromeDriver executable needs to be available in the path. " 
selenium.common.exceptions.WebDriverException: Message: ChromeDriver executable needs to be available in the path. Please download from http://chromedriver.storage.googleapis.com/index.html and read up at http://code.google.com/p/selenium/wiki/ChromeDriver 

В документации указывается, хром на этом месте на моей машине:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome 

Что можно сделать, чтобы обойти эту проблему и начать получать данные с определенных страниц, как я планировал? Если вы можете быть очень откровенными в отношении изменений кода или изменений местоположения, так как я не очень хорошо разбираюсь в вычислениях!

Спасибо всем, и я надеюсь, что мой вопрос не слишком прост!

ответ

3

ChromeDriver - это двоичный файл, который взаимодействует с WebDriver с Chrome. Если у вас установлены библиотеки WebDriver и установлен Chrome, вам все равно нужен двоичный код ChromeDriver в том месте, которое WebDriver может найти.

Поскольку сообщение об ошибке указывает, что вам нужно, чтобы получить двоичный файл здесь:

http://chromedriver.storage.googleapis.com/index.html 

А затем поместить двоичный файл где-то на вашем пути. При желании вы можете указать WebDriver, где находится двоичный файл, задав системное свойство. Я бы начал с размещения бинарного где-то на вашем PATH и получить более конкретные/сложные, если вам нужно.

/usr/bin находится на глобальном пути для OS X, так что это хорошее место для размещения файла. Кроме того, он будет доступен любому пользователю на компьютере. Вы можете открыть эту папку, открыв окно Finder, выбрав «Go -> Go To Folder» в меню, затем введите/usr/bin (вас, вероятно, попросят ввести пароль, поскольку это системное расположение.) Затем просто скопируйте туда двоичный файл ChromeDriver.

+0

Большое вам спасибо! –

+1

Начиная с El Capitan (OS X 10.11) добавление файла на один из системных путей больше невозможен благодаря «Системной защите целостности». Это означает, что невозможно поставить хромированный реверс в глобальный путь. Поэтому нам нужно изменить глобальный путь, который используется в eclipse. Для этого недостаточно изменить bash_profile. У кого-нибудь есть решение для этого? – Bjinse

3

Чтобы обойти эту проблему на Mac OXS El Capitan 10.11.6, я добавил копию chromedriver исполняемого файла для:

/Library/Python/2.7/site-packages/selenium/webdriver 
1

Используйте '/ USR/местные/бен/chromedriver. Это сработало для меня:

import selenium 
import os 

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

chromedriver = '/usr/local/bin/chromedriver' 
browser = webdriver.Chrome(chromedriver) 
browser.get('https://stackoverflow.com/users/login') 
Смежные вопросы