Python / Selen / PhantomJS: "Phantomjs können nicht mit Ghostdriver gestartet werden."

15

Ich versuche, Selenium dazu zu bringen, Phantombilder auf einem Windows-Computer zu verwenden. Mein Code wird ohne Fehler kompiliert:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import cookielib
import re
from splinter import Browser

driver = webdriver.PhantomJS('C:/Program Files (x86)/phantomjs-1.9.2-windows')

Aber jedes Mal, wenn ich es starte, bekomme ich den Fehler

Traceback (most recent call last):
  File "E:/~PROJECT/disinfo/py/bs.py", line 8, in <module>
    driver = webdriver.PhantomJS('C:/Program Files (x86)/phantomjs-1.9.2-windows')
  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 63, 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 

Ich habe diesen Fehler seit Stunden bekommen. "Phantomjs können nicht mit Ghostdriver gestartet werden". Die einfachsten Online-Beispiele zeigen die Installation von Selen mit PIP und anschließend von Phantomen mit NodeJS NPM, wie ich es gemacht habe. Selens Standort ist auch in meinem PYTHONPATH. Ich habe ehrlich gesagt keine Ahnung, was zum Teufel das Ding von mir will. Irgendwelche Ideen?

Amalgovinus
quelle
Dieselben Probleme mit Basiscode, die einst funktionierten, dachten, ich hätte zuerst meine Python-Struktur gebrochen.
Shane
1
Welp, es sieht so aus, als hätte Phantomjs 'Entwickler zugegeben, dass die Pythonbindungen zurückliegen. github.com/detro/ghostdriver/issues/236 Soviel zur Verwendung von Phantomjs. Ich wünschte, ich hätte das gewusst, bevor ich mehrere Stunden damit verbracht hätte, Phantombilder zum Leben zu erwecken.
Amalgovinus
1
Gleiche Gefühle hier. Warum es so wichtig ist, Code und nicht Bibliotheken zu lernen, es sei denn, sie werden von einer großen Community verwaltet. Man kann nie erwarten, dass ein Mann sein Projekt aufrechterhält, besonders wenn er mit der harten Arbeit kein Geld verdient.
Shane

Antworten:

19

Ich bin auf dasselbe Problem gestoßen. Ich musste den vollständigen Pfad zur exe angeben, wie in der Dokumentation beschrieben :

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\phantomjs-1.9.2\phantomjs.exe')
John
quelle
Dies erlaubte es ihm tatsächlich, zu wählen, Hurra. Jetzt ist das einzige Problem, jedes Element, das ich zu drucken versuche, gibt mir nur ein "selenium.webdriver.phantomjs.webdriver.WebDriver-Objekt bei 0x0000000002F54668" oder eine Unicode-ID. Ich empfehle stattdessen lorien's Grab. bitbucket.org/lorien/grab/src/…
Amalgovinus
wahre Geschichte!! wünschte, ich könnte 5 mal stimmen.
Hallo
Hat bei mir nicht funktioniert ... Ich musste service.py gemäß der Antwort von DT_Lvhyy bearbeiten.
Deep-B
Es sieht aus wie für Ubuntu und Linux-Systeme, ~ sollte der tatsächliche Pfad von root zum Verzeichnis sein
Delos Chang
2

Sie müssen ändern ...\Python27\Lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\service.py

Diese Google-Codepage würde helfen.

DT_Lvhyy
quelle