这是令人尴尬的问题,因为它似乎是错误的机会。我不认为这会很困难,但我现在已经把它搞砸了近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
这对你来说可能是一个版本问题,但是因为我刚刚在我的Windows 7 PC上进行了设置而没有出现问题,我将在这里分享我的“旅程”。
首先,我更习惯于Mac / Linux终端并拥有python包管理器 pip
在我看来对我来说至关重要。安装后 Python 2.7.8 并添加 ;c:\Python27
我的路径 我注意到了 pip
不包含在低于2.7.9的Python版本中,所以我 不得不自己添加它。后来我加了 ;c:\Python27\Scripts
我的路径。
之后获取python包 selenium
就像在cmd中键入以下内容一样简单:
pip install selenium
然后我下载了 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。
我在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)
你有任何其他文件或目录具有相同的名称,或编码文件(如.. phantomjs.py),你的名字是相同的 phantomjs
然后将其重命名为其他内容。我希望它有效