Chrome驱动程序需要在Mac上的路径错误中可用

Mas*_*ner 6 selenium python-2.7 selenium-chromedriver

我在我的笔记本电脑上运行OS X 10.9.4,使用Chrome 40.0.2214.94和Selenium 2.44.0,我使用easy_install安装了Python 2.7.我的代码是来自selenium演练的基本代码:

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()
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个时,我得到一个例外:

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
Run Code Online (Sandbox Code Playgroud)

正如文档所指定的那样,chrome位于我机器上的这个位置:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来解决这个问题并开始按照我的计划从某些页面检索数据?如果您可以非常清楚地了解代码更改或位置更改,因为我不是最精通计算的!

谢谢大家,我希望我的问题不是太简单!

小智 8

ChromeDriver是一个二进制文件,可将WebDriver与Chrome连接.如果您安装了WebDriver库并安装了Chrome,那么您仍然需要在WebDriver可以找到它的位置使用ChromeDriver二进制文件.

如错误消息所示,您需要从此处获取二进制文件:

http://chromedriver.storage.googleapis.com/index.html
Run Code Online (Sandbox Code Playgroud)

然后将二进制文件放在PATH的某个位置.(可选)您可以通过设置系统属性告诉WebDriver二进制文件的位置.我首先将二进制文件放在PATH上的某个位置,如果需要,可以获得更具体/更复杂的内容.

/ usr/bin位于OS X的全局路径上,因此这是放置文件的好地方.此外,它可供计算机上的任何用户使用.您可以通过打开Finder窗口打开该文件夹,在菜单中选择Go - > Go To Folder,然后输入/ usr/bin(您可能会被要求输入密码,因为它是系统位置.)然后只需将ChromeDriver二进制文件复制到那里.

  • 从El Capitan(OS X 10.11)开始,由于“系统完整性保护”,无法再将文件添加到系统路径之一。这意味着不可能将chromedriver放在全局路径中。因此,我们需要更改Eclipse中使用的全局路径。仅仅更改bash_profile还不够。有人对此有解决方案吗? (2认同)

scm*_*cmz 7

使用'/ usr/local/bin/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')
Run Code Online (Sandbox Code Playgroud)

  • 我将驱动程序移动到`/ usr/local/bin /`并且它可以工作! (4认同)