Selenium与GhostDriver在Windows上的Python

时间:2014-02-14 00:27:45

标签: python selenium phantomjs ghostdriver

这令人尴尬,因为它看起来像错误的机会很小。我不认为这会很困难,但我现在已经把它搞砸了近3个小时了,这让我很头疼。我已经阅读了几十个stackoverflow线程和谷歌线程。

我已经安装了PhantomJS,将它添加到我的系统变量路径中,并且它在命令行中正常工作。我之前还使用easy_install安装了Selenium。

我得到的错误是:

__init__    C:\Python27\lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\webdriver.py   50      

start   C:\Python27\lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\service.py 66      

WebDriverException: Message: 'Unable to start phantomjs with ghostdriver.' ; Screenshot: available via screen               

这是我的代码:

from selenium import webdriver

driver = webdriver.PhantomJS(executable_path="C:\Python27\misc\phantomjs\phantomjs.exe")

我也尝试过:

from selenium import webdriver

driver = webdriver.PhantomJS()

我收到相同的错误消息。这一定很简单,我做错了。我很感激任何评论或答案。

Windows 7 64位 Python 2.7

3 个答案:

答案 0 :(得分:13)

这可能是您的版本问题,但由于我刚刚在Windows 7 PC上进行了设置而没有出现问题,我将在此处分享我的“旅程”。

首先,我更习惯于Mac / Linux终端,并且拥有python包管理器pip对我来说至关重要。安装Python 2.7.8并添加;c:\Python27 to my PATH后,我注意到pip未包含在低于2.7.9的Python版本中,因此我had to add it myself。之后我将;c:\Python27\Scripts添加到了我的路径中。

在获取python包selenium之后就像在cmd中键入以下内容一样简单:

pip install selenium

然后我从here下载了phantomjs-1.9.7-windows.zip,解压缩并将其放在此处:

C:\Python27\misc\phantomjs-1.9.7-windows\phantomjs.exe

从那里我有一个适用于Windows 7的Python 2.7 / Selenium Webdriver / PhantomJS示例。

from selenium import webdriver
import os

phantomjs_path = "C:\Python27\misc\phantomjs-1.9.7-windows\phantomjs.exe"

browser = webdriver.PhantomJS(executable_path=phantomjs_path, service_log_path=os.path.devnull)
browser.set_window_size(1400, 1000)

browser.get("https://stackoverflow.com/")

print browser.title

请注意,我将参数service_log_path=os.path.devnull添加到函数webdriver.PhantomJS(),以防止PhantomJS在正在执行的python文件的目录中创建ghostdriver.log。

答案 1 :(得分:1)

我在Windows Server 2012 R2上运行Python 3.4时遇到了同样的问题。 PhantomJS无法创建ghostdriver.log文件。我按照以下步骤修复了它:

  • 确保phantomjs.exe未在“文件属性”|“安全”选项卡上显示“已阻止”,并将其作为独立应用程序运行以进行确认。
  • 删除了位于同一目录中的ghostdriver.log文件的旧副本
  • 从控制台中查看python REPL,同时检查实例化驱动程序的代码是否被成功调用。

    browser = webdriver.PhantomJS(executable_path='phantomjs.exe', desired_capabilities=argdc, service_args=svc_args)
    

答案 2 :(得分:0)

你是否有任何其他同名的文件或目录,或者你命名为phantomjs的编码文件(如.. phantomjs.py),然后将其重命名为其他内容。我希望它有效