Python / Selenium / PhantomJS: „Nie można uruchomić phantomjs za pomocą Ghostdriver.”

15

Próbuję przekonać Selenium do korzystania z phantomjs na komputerze z systemem Windows. Mój kod kompiluje się bez żadnego błędu:

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')

Ale za każdym razem, gdy go uruchamiam, pojawia się błąd

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 

Ten błąd pojawia się od wielu godzin. „Nie można uruchomić phantomjs za pomocą Ghostdriver”. Najprostsze przykłady online pokazują instalowanie selenu z PIP, a następnie phantomjs z NodeJS NPM, tak właśnie zrobiłem. Lokalizacja Selenium znajduje się również w mojej PYTHONPATH. Szczerze mówiąc, nie mam pojęcia, do diabła, czego ta rzecz ode mnie chce. Jakieś pomysły?

Amalgovinus
źródło
Te same problemy z podstawowym kodem, które kiedyś działały, na początku myślałem, że zepsułem strukturę Pythona.
Shane,
1
Welp, wygląda na to, że twórca phantomjs przyznał, że wiązania Pythona są opóźnione. github.com/detro/ghostdriver/issues/236 Tyle o korzystaniu z phantomjs. Żałuję, że nie wiedziałem o tym, zanim spędziłem kilka cholernych godzin próbując oszukać fantomy.
Amalgovinus
1
Te same uczucia tutaj. Dlaczego tak ważna jest nauka kodu, a nie bibliotek, chyba że są one utrzymywane przez dużą społeczność. Nigdy nie można oczekiwać, że jeden facet utrzyma swój projekt, zwłaszcza jeśli nie zarabia na ciężkiej pracy.
Shane

Odpowiedzi:

19

Natrafiłem na ten sam problem. Musiałem podać pełną ścieżkę do pliku exe, jak opisano w dokumentacji :

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\phantomjs-1.9.2\phantomjs.exe')
Jan
źródło
To rzeczywiście pozwoliło mu zadzwonić, hura. Teraz jedynym problemem jest to, że każdy element, który próbuję wydrukować, daje mi po prostu „selenium.webdriver.phantomjs.webdriver.WebDriver o numerze 0x0000000002F54668” lub identyfikator Unicode. Zamiast tego polecam Lorien's Grab. bitbucket.org/lorien/grab/src/…
Amalgovinus
prawdziwa historia!! chciałbym móc głosować 5 razy.
HelloW,
Nie działało dla mnie ... Musiałem edytować service.py zgodnie z odpowiedzią DT_Lvhyy.
Deep-B
Wygląda na to, że w systemach Ubuntu i Linux ~ powinna być rzeczywista ścieżka od katalogu głównego do katalogu
Delos Chang
2

Musisz zmodyfikować ...\Python27\Lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\service.py

Ta strona kodowa Google pomogłaby.

DT_Lvhyy
źródło