Python / Selenium / PhantomJS: «Невозможно запустить фантомы с помощью ghostdriver».


15

Я пытаюсь заставить Selenium использовать phantomjs на компьютере с Windows. Мой код компилируется без ошибок:

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

Но каждый раз, когда я запускаю его, я получаю ошибку

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 

Я получаю эту ошибку в течение нескольких часов. "Невозможно запустить фантом с ghostdriver". Простейшие примеры онлайн показывают установку селена с PIP, а затем фантомов с NodeJS NPM, как я это сделал. Местоположение Selenium в моей PYTHONPATH также. Я, честно говоря, понятия не имею, какого черта эта штука хочет от меня. Есть идеи?


Те же проблемы с базовым кодом, которые когда-то работали, но я сначала подумал, что нарушил структуру Python.
Шейн

1
Похоже, разработчик фантомов признал, что привязки к Python позади. github.com/detro/ghostdriver/issues/236 Так много для использования фантомов. Хотел бы я знать это, прежде чем я потратил несколько часов, пытаясь привести фантомов в чувство.
Амальговинус

1
Те же чувства здесь. Почему так важно изучать код, а не библиотеки, если они не поддерживаются большим сообществом. Никогда нельзя ожидать, что один парень поддержит свой проект, особенно если он не зарабатывает денег на тяжелой работе.
Шейн

Ответы:


19

Я столкнулся с той же проблемой. Мне нужно было указать полный путь к exe, как описано в документации :

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\phantomjs-1.9.2\phantomjs.exe')

Это действительно позволило ему дозвониться, ура. Теперь единственная проблема заключается в том, что каждый элемент, который я пытаюсь напечатать, просто дает мне «selenium.webdriver.phantomjs.webdriver.WebDriver объект по адресу 0x0000000002F54668» или идентификатор Unicode. Я рекомендую Лориена Grab вместо этого. bitbucket.org/lorien/grab/src/…
Амальговинус

правдивая история!! Жаль, что я мог бы проголосовать 5 раз.
HelloW

У меня не сработало ... Мне пришлось редактировать service.py в соответствии с ответом DT_Lvhyy.
Deep-B

Похоже, для систем Ubuntu и Linux, ~ должен быть фактический путь от корня до каталога
Delos Chang

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.