Selenium/PhantomJS 引发错误

Posted

技术标签:

【中文标题】Selenium/PhantomJS 引发错误【英文标题】:Selenium/PhantomJS raises error 【发布时间】:2015-07-04 08:56:09 【问题描述】:

我正在尝试在 Python 中运行 PhantomJS 驱动程序,但出现错误。我读过我应该将整个路径作为参数传递,但它没有帮助。

代码如下:

from selenium import webdriver

# driver = webdriver.Chrome('D:\Python_projects\chromedriver_win32/chromedriver.exe') # this works
driver = webdriver.PhantomJS(executable_path='D:\Python\phantomjs-2.0.0-windows\bin\phantomjs.exe')

错误:

Traceback (most recent call last):
  File "path to script", line 8, in <module>
    driver = webdriver.PhantomJS(executable_path='D:\Python\phantomjs-2.0.0-windows\bin\phantomjs.exe')
  File "C:\Python27\lib\site-packages\selenium\webdriver\phantomjs\webdriver.py", line 50, in __init__
    self.service.start()
  File "C:\Python27\lib\site-packages\selenium\webdriver\phantomjs\service.py", line 75, in start
    raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
selenium.common.exceptions.WebDriverException: Message: Unable to start phantomjs with ghostdriver.
Screenshot: available via screen

你知道我做错了什么吗?

【问题讨论】:

@MalikBrahimi 文档说应该给出可执行文件的路径 - selenium.googlecode.com/svn/trunk/docs/api/py/… 为什么不在系统路径中添加包含可执行文件的目录? 无法在 Windows 上使用 Selenium 2.44.0 和 PhantomJS 2.0.0 进行复制。 【参考方案1】:

在原始字符串中创建路径,添加'r':

driver = webdriver.PhantomJS(executable_path=r'D:\Python\phantomjs-2.0.0-windows\bin\phantomjs.exe')

【讨论】:

这对我有用,虽然将 phantomjs.exe 移动到脚本文件夹也可以,但它似乎比实际获取要接受的路径要少。 它也可以正确地转义反斜杠(即用 C:\\...\\... 代替 C:\...\... 等等等等【参考方案2】:

为简单起见,将可执行文件放在与您的脚本相同的目录中:

driver = webdriver.PhantomJS() # now there's no need for a path

【讨论】:

谢谢!我不知道为什么即使指定了正确的路径它也不起作用...将 phantomjs.exe 复制到我的 python 文件夹有效。 这就是答案!【参考方案3】:

对我来说,以上都没有解决问题;我找到了代码:

driver = webdriver.PhantomJS()

仅适用于 root...

【讨论】:

【参考方案4】:

对我来说,这很好用,也不必为 PhantomJS 指定路径 您需要使用 pip 安装 pip install phantomjs-binary 二进制包

pip install phantomjs-binary

它将下载一个大约 60MB 的包。 并根据运行环境包含适用于 windows、mac 和 Linux 的 PhantomJS。 之后就可以使用了

from selenium import webdriver
from phantomjs_bin import executable_path

driver = webdriver.PhantomJS(executable_path=executable_path)

【讨论】:

以上是关于Selenium/PhantomJS 引发错误的主要内容,如果未能解决你的问题,请参考以下文章

Selenium + Firefox到Selenium + PhantomJS [关闭]

Selenium+PhantomJS

更改 HTTP 标头 Selenium + PhantomJS

利用Selenium+PhantomJS 实现截图

C#使用Selenium+PhantomJS抓取数据

Selenium+PhantomJS使用初体验