Python / Selenium / PhantomJS: "Não foi possível iniciar o phantomjs com o ghostdriver."

15

Estou tentando fazer com que o Selenium use phantomjs em uma máquina Windows. Meu código é compilado sem nenhum erro:

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

Mas toda vez que eu corro, eu recebo o erro

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 

Estou recebendo esse erro há horas. "Incapaz de iniciar phantomjs com o ghostdriver". Os exemplos mais simples online mostram a instalação do selênio com o PIP e, em seguida, o phantomjs com o NodeJS NPM, que foi como eu fiz isso. A localização do Selenium também está no meu PITONONA. Francamente, não tenho ideia do que diabos essa coisa quer de mim. Alguma ideia?

Amalgovinus
fonte
Os mesmos problemas no código básico que antes funcionavam, pensei que eu tivesse quebrado minha estrutura python primeiro.
Shane
1
Bem, parece que o desenvolvedor do phantomjs admitiu que as ligações do python estão por trás. github.com/detro/ghostdriver/issues/236 Tanta coisa para usar phantomjs. Gostaria de ter sabido disso antes de passar várias horas tentando foder fantasmas à vida.
Amalgovinus
1
Os mesmos sentimentos aqui. Por que é tão importante aprender código e não bibliotecas, a menos que sejam mantidos por uma grande comunidade. Você nunca pode esperar que um indivíduo mantenha seu projeto, especialmente se não estiver ganhando dinheiro com o trabalho duro.
21413 Shane

Respostas:

19

Eu tive o mesmo problema. Eu precisava fornecer o caminho completo para o exe, conforme descrito na documentação :

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\phantomjs-1.9.2\phantomjs.exe')
John
fonte
Isso de fato permitiu que ele discasse, viva. Agora, o único problema é que, todo elemento que tento imprimir, fornece apenas um objeto "selenium.webdriver.phantomjs.webdriver.WebDriver em 0x0000000002F54668" ou um ID unicode. Eu recomendo o Gror de Lorien. bitbucket.org/lorien/grab/src/…
Amalgovinus
história real!! Gostaria de poder votar 5 vezes.
Hellow
Não funcionou para mim ... Eu tive que editar o service.py conforme a resposta de DT_Lvhyy.
Deep-B
Parece que para sistemas Ubuntu e Linux, ~ deve ser o caminho real da raiz para o diretório
Delos Chang
2

Você precisa modificar ...\Python27\Lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\service.py

Esta página de código do Google ajudaria.

DT_Lvhyy
fonte