问题 Selenium与GhostDriver在Windows上的Python


这是令人尴尬的问题,因为它似乎是错误的机会。我不认为这会很困难,但我现在已经把它搞砸了近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


11496
2018-02-14 00:27


起源

是的,我复制了那条道路并粘贴了它,没有错误。我也只是在命令行中运行它,它改为“phantomjs>”。所以一切都很好。我想它可能是版本不匹配或什么的?这真的让我很难过。 - User
1.9.7。路径是:C:\ Python27 \ misc \ phantomjs \ - User
我无法重现它。请尝试进入另一条路径并再试一次。错误消息显示路径错误。 - Yi Zeng
是的,我在发布之前已经尝试过了。这么奇怪。当我说版本不匹配时,我正在考虑Selenium和PhantomJS,但它们今天都是新安装的。 - User
它越来越陌生了。我将每个/更改为//然后在pyscripter中运行未保存的python脚本,它给了我错误:IOError:[Errno 13]权限被拒绝:'ghostdriver.log'。我认为这是进步。然后我保存了它,错误又回来了。此问题与路径的引用或路径的解释方式有关。 - User


答案:


这对你来说可能是一个版本问题,但是因为我刚刚在我的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。


13
2017-07-04 18:25





我在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)
    

1
2017-08-28 01:52





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


0
2018-04-14 06:31