Python / Selenium / PhantomJS: "Tidak dapat memulai phantomjs dengan ghostdriver."

15

Saya mencoba membuat Selenium menggunakan phantomjs di mesin Windows. Kode saya dikompilasi tanpa kesalahan:

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

Tetapi setiap kali saya menjalankannya saya mendapatkan kesalahan

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 

Saya telah mendapatkan kesalahan ini selama berjam-jam. + Msgstr "Tidak dapat memulai phantomjs dengan ghostdriver". Contoh online paling sederhana menunjukkan menginstal selenium dengan PIP dan kemudian phantomjs dengan NodeJS NPM, yang merupakan cara saya melakukannya. Lokasi Selenium juga ada di PYTHONPATH saya. Terus terang saya tidak tahu apa yang diinginkan benda ini dari saya. Ada ide?

Amalgovinus
sumber
Masalah yang sama pada kode dasar yang pernah bekerja, mengira saya telah mematahkan struktur python saya pada awalnya.
Shane
1
Nah, sepertinya dev phantomjs telah mengakui bahwa binding python ada di belakang. github.com/detro/ghostdriver/issues/236 Begitu banyak menggunakan phantomjs. Seandainya aku tahu bahwa sebelum aku menghabiskan beberapa jam mencoba untuk bertengkar hantu untuk hidup.
Amalgovinus
1
Perasaan yang sama di sini. Mengapa sangat penting untuk mempelajari kode dan bukan perpustakaan kecuali jika dikelola oleh komunitas besar. Anda tidak pernah dapat mengharapkan satu orang untuk mempertahankan proyeknya terutama jika tidak menghasilkan uang dari kerja keras.
Shane

Jawaban:

19

Saya mengalami masalah yang sama. Saya perlu memberikan path lengkap ke exe, seperti yang dijelaskan dalam dokumentasi :

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='C:\phantomjs-1.9.2\phantomjs.exe')
John
sumber
Ini memang memungkinkan untuk keluar, hore. Sekarang satu-satunya masalah adalah, setiap elemen yang saya coba cetak, itu hanya memberi saya "selenium.webdriver.phantomjs.webdriver.WebDriver objek di 0x0000000002F54668" atau ID unicode. Saya merekomendasikan Grab lorien sebagai gantinya. bitbucket.org/lorien/grab/src/...
Amalgovinus
kisah nyata!! Seandainya aku bisa menang 5 kali.
HelloW
Tidak berfungsi untuk saya ... Saya harus mengedit service.py sesuai jawaban DT_Lvhyy.
Deep-B
Sepertinya untuk sistem Ubuntu dan Linux, ~ seharusnya menjadi jalur aktual dari root ke direktori
Delos Chang
2

Anda perlu memodifikasi ...\Python27\Lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\service.py

Halaman kode google ini akan membantu.

DT_Lvhyy
sumber