Menjalankan Selenium WebDriver python bindings di chrome

147

Saya mengalami masalah saat bekerja dengan Selenium. Untuk proyek saya, saya harus menggunakan Chrome. Namun, saya tidak dapat terhubung ke browser itu setelah meluncurkannya dengan Selenium.

Untuk beberapa alasan, Selenium tidak dapat menemukan Chrome dengan sendirinya. Inilah yang terjadi ketika saya mencoba meluncurkan Chrome tanpa menyertakan jalur:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome() # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 58, in start
    and read up at http://code.google.com/p/selenium/wiki/ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.                 Please download from http://code.google.com/p/selenium/downloads/list                and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'

Untuk mengatasi masalah ini, saya kemudian memasukkan jalur Chromium dalam kode yang meluncurkan Chrome. Namun, juru bahasa gagal menemukan soket untuk terhubung ke:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome('/usr/bin/chromium') # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 64, in start
    raise WebDriverException("Can not connect to the ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the ChromeDriver'

Saya juga mencoba menyelesaikan masalah dengan meluncurkan chrome dengan:

chromium --remote-shell-port = 9222

Namun, ini juga tidak berhasil.

PS. Berikut beberapa informasi tentang sistem saya:

www-klien: chromium 15.0.874.121  
dev-lang: python 2.7.2-r3 Selenium 2.11.1  
OS: Kernel Gentoo GNU / Linux 3.1.0-gentoo-r1
Akendo
sumber
Saya hanya ingin memberi tahu Anda bahwa "--remote-shell-port" bukan opsi baris perintah yang valid. Lihat: peter.sh/experiments/chromium-command-line-switches ("--remote-debugging-port" akan menjadi yang benar. Perlu diketahui bahwa Anda harus menutup semua instance kromium sebelum menggunakan opsi itu. Yaitu membuat jendela baru di sesi browser yang ada tidak berfungsi).
dpat

Jawaban:

133

Anda harus memastikan biner ChromeDriver mandiri (yang berbeda dari biner browser Chrome) ada di jalur Anda atau tersedia di variabel lingkungan webdriver.chrome.driver.

lihat http://code.google.com/p/selenium/wiki/ChromeDriver untuk informasi lengkap tentang cara menghubungkannya.

Edit:

Benar, tampaknya menjadi bug dalam binding Python wrt membaca biner chromedriver dari path atau variabel lingkungan. Tampaknya jika chromedriver tidak ada di jalur Anda, Anda harus menyampaikannya sebagai argumen kepada konstruktor.

import os
from selenium import webdriver

chromedriver = "/Users/adam/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")
driver.quit()
adam goucher
sumber
Maaf lupa menyebutkan itu. Saya mendapat tautan ini.
Akendo
2
Mencoba Chromedriver alih-alih Firefox Webdriver .. hampir 3 kali
peningkatan
4
Juga, hanya ingin menyebutkan bahwa argumen dilewatkan ke konstruktor adalah jalan untuk ChromeDriver biner dan tidak dengan direktori yang berisi ChromeDriver biner (terbuang masa lalu setengah jam mencari tahu apa yang tidak beres).
TheRookierLearner
107

Untuk Linux

  1. Periksa Anda telah menginstal versi terbaru dari chrome brwoser-> chromium-browser -version
  2. Jika tidak, instal versi chrome terbaru sudo apt-get install chromium-browser
  3. dapatkan versi driver chrome yang sesuai dari sini
  4. Unzip the chromedriver.zip
  5. Pindahkan file ke /usr/bindirektorisudo mv chromedriver /usr/bin
  6. /usr/binDirektori gotocd /usr/bin
  7. Sekarang, Anda perlu menjalankan sesuatu seperti sudo chmod a+x chromedrivermenandainya dapat dieksekusi.
  8. akhirnya kamu bisa mengeksekusi kodenya.

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("http://www.google.com")
    print driver.page_source.encode('utf-8')
    driver.quit()
    display.stop()
Vicky
sumber
1
Sangat bagus! Satu catatan: Saya hanya bisa menjalankan ini dengan chromedriver 32-bit meskipun saya menjalankan linux 64-bit.
Imran
Pada Ubuntu (14.04) Anda dapat menginstal paket chromium-chromdriver (mis. Dengan apt-get) dan menambahkan path file chromedriver ke variabel shell PATH PATH = "$ {PATH}": / usr / lib / chromium-browser / Jika Anda menambahkan ini ke .bashrc Anda, Anda tidak perlu mengaturnya setiap kali Anda ingin menguji dengan selenium.
Arpad Horvath
1
sebenarnya jawaban ini seharusnya memiliki lebih banyak upvotes. pada dasarnya ini adalah cara untuk pergi untuk setiap pengemudi seperti geckodriver.
holzkohlengrill
Versi browser kromium saya disebut sebagai (Chromium 67.0.3396.99 Dibangun di Ubuntu, berjalan di Ubuntu 16.04) tetapi tautannya hanya memiliki versi 2.0-2.9. Butuh pertolongan.
Vaibhav Maheshwari
93

Hanya Mac OSX

Cara yang lebih mudah untuk memulai (dengan asumsi Anda sudah menginstal homebrew , yang harus Anda lakukan, jika tidak, lakukan dulu dan biarkan homebrew membuat hidup Anda lebih baik) adalah dengan menjalankan perintah berikut:

brew install chromedriver

Itu harus menempatkan chromedriver di jalur Anda dan Anda harus siap.

Jachin
sumber
Itu tidak bisa bekerja di Mac. selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
wyx
1
@ Windows x Lingkungan Anda mungkin tidak diatur dengan benar. Coba jalankan brew doctordan lihat apakah itu menemukan sesuatu.
Jachin
2
Ini adalah salah satu momen hangat dan kabur ketika Anda hanya senang bahwa Anda memiliki Mac. Begitu mudah.
Pengguna
JANTUNG! Saya suka minuman
RHSM
52

Untuk windows

Unduh ChromeDriver dari tautan langsung ini ATAU dapatkan versi terbaru dari halaman ini .

Rekatkan chromedriver.exefile di fileC:\Python27\Scripts folder .

Ini seharusnya berfungsi sekarang:

from selenium import webdriver
driver = webdriver.Chrome()
Abdul Majeed
sumber
23

Untuk windows, silakan chromedriver.exeletakkan di bawah<Install Dir>/Python27/Scripts/

pengguna2253967
sumber
dan di mana harus meletakkan di ubuntu? int /usr/lib/atau di tempat lain?
Gaurav Jain
Memiliki file dalam PATHtidak cukup, meletakkannya /Scripts/di tempat ride.pyyang dikerjakan.
Qwerty
1

Ada 2 cara untuk menjalankan tes python Selenium di Google Chrome. Saya sedang mempertimbangkan Windows (Windows 10 dalam kasus saya):

Prasyarat: Unduh Driver Chrome terbaru dari: https://sites.google.com/a/chromium.org/chromedriver/downloads

Cara 1:

i) Ekstrak file zip yang diunduh di direktori / lokasi pilihan Anda
ii) Tetapkan jalur yang dapat dieksekusi dalam kode Anda seperti di bawah ini:

self.driver = webdriver.Chrome(executable_path='D:\Selenium_RiponAlWasim\Drivers\chromedriver_win32\chromedriver.exe')

Cara 2:

i) Cukup tempel chromedriver.exe di bawah / Python / Scripts / (Dalam kasus saya foldernya adalah: C: \ Python36 \ Scripts)
ii) Sekarang tulis kode sederhana seperti di bawah ini:

self.driver = webdriver.Chrome()
Ripon Al Wasim
sumber
-1

Untuk IDE Windows:

Jika jalur Anda tidak berfungsi, Anda dapat mencoba menambahkannya chromedriver.exeke proyek Anda, seperti dalam struktur proyek ini.

chromedriver.exe

Maka Anda harus memuatnya chromedriver.exedi file utama Anda. Seperti untuk saya, saya dimuat driver.exedi driver.py.

def get_chrome_driver():
return webdriver.Chrome("..\\content\\engine\\chromedriver.exe",
                            chrome_options='--no-startup-window')

..berarti driver.py'sdirektori atas

.berarti direktori di mana driver.pyberada

Semoga ini bisa membantu.

tyrantqiao
sumber