Python / Selenium / PhantomJS: "Impossible de démarrer les phantomjs avec ghostdriver."

15

J'essaie d'amener Selenium à utiliser des fantômes sur une machine Windows. Mon code se compile sans aucune erreur:

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

Mais chaque fois que je l'exécute, j'obtiens l'erreur

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 

Je reçois cette erreur depuis des heures. Msgstr "Impossible de démarrer phantomjs avec ghostdriver". Les exemples les plus simples en ligne montrent l'installation de sélénium avec PIP puis de phantomjs avec NodeJS NPM, c'est ainsi que je l'ai fait. L'emplacement de Selenium est également dans mon PYTHONPATH. Je n'ai franchement aucune idée de ce que cette chose attend de moi. Des idées?

Amalgovinus
la source
Les mêmes problèmes sur le code de base qui fonctionnaient autrefois, pensaient que j'avais cassé ma structure python au début.
Shane
1
Welp, il semble que le développeur de phantomjs ait admis que les liaisons python sont derrière. github.com/detro/ghostdriver/issues/236 Voilà pour l'utilisation de phantomjs. J'aurais aimé le savoir avant de passer plusieurs heures à essayer de donner vie à des fantômes.
Amalgovinus
1
Même sentiment ici. Pourquoi il est si important d'apprendre le code et non les bibliothèques à moins qu'ils ne soient maintenus par une grande communauté. Vous ne pouvez jamais vous attendre à ce qu'un gars maintienne son projet, surtout s'il ne gagne pas d'argent grâce au travail acharné.
Shane

Réponses:

19

Je suis tombé sur le même problème. J'avais besoin de fournir le chemin complet vers l'exe, comme décrit dans la documentation :

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\phantomjs-1.9.2\phantomjs.exe')
John
la source
Cela lui a en effet permis de composer, hourra. Maintenant, le seul problème est que chaque élément que j'essaie d'imprimer me donne juste un objet "selenium.webdriver.phantomjs.webdriver.WebDriver à 0x0000000002F54668" ou un ID unicode. Je recommande plutôt Lorian's Grab. bitbucket.org/lorien/grab/src/…
Amalgovinus
histoire vraie!! J'aimerais pouvoir voter 5 fois.
HelloW
Cela n'a pas fonctionné pour moi ... J'ai dû modifier service.py selon la réponse de DT_Lvhyy.
Deep-B
Il ressemble aux systèmes Ubuntu et Linux, ~ devrait être le chemin réel de la racine vers le répertoire
Delos Chang
2

Vous devez modifier ...\Python27\Lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\service.py

Cette page de code Google pourrait aider.

DT_Lvhyy
la source