Chrome'da Selenium WebDriver python bağlantılarını çalıştırma


147

Selenium ile çalışırken bir sorunla karşılaştım. Projem için Chrome kullanmam gerekiyor. Ancak, Selenium ile başlattıktan sonra o tarayıcıya bağlanamıyorum.

Nedense Selenium Chrome'u tek başına bulamıyor. Bir yol eklemeden Chrome'u başlatmaya çalıştığımda olan şey budur:

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'

Bu sorunu çözmek için Chrome'u başlatan koda Chromium yolunu dahil ettim. Ancak, yorumlayıcı bağlanmak için bir yuva bulamıyor:

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'

Ayrıca krom ile başlatarak sorunu çözmeyi denedim:

krom - uzaktan-kabuk-bağlantı noktası = 9222

Ancak, bu da işe yaramadı.

PS. Sistemim hakkında bazı bilgiler:

www-istemci: krom 15.0.874.121  
dev-lang: python 2.7.2-r3 Selenyum 2.11.1  
İşletim Sistemi: GNU / Linux Gentoo Kernel 3.1.0-gentoo-r1

Sadece "--remote-shell-port" un geçerli bir komut satırı seçeneği olmadığını bildirmek istedim. Bkz. Peter.sh/experiments/chromium-command-line-switches ("--remote-debugging-port" doğru olabilir. Lütfen bu seçeneği kullanmadan önce tüm krom örneklerini kapatmanız gerektiğini unutmayın. mevcut bir tarayıcı oturumundaki yeni pencere çalışmıyor).
dpat

Yanıtlar:


133

Bağımsız ChromeDriver ikili dosyasının (Chrome tarayıcı ikili dosyasından farklı) yolunuzda olduğundan veya webdriver.chrome.driver ortam değişkeninde bulunduğundan emin olmanız gerekir.

İşlerin nasıl yapıldığına dair tam bilgi için http://code.google.com/p/selenium/wiki/ChromeDriver adresine bakın .

Düzenle:

Doğru, yoldan veya ortam değişkeninden kromoriver ikilisini okuyan Python bağlarında bir hata gibi görünüyor . Görünüşe bakılırsa, chromedriver yolunuzda değilse bunu yapıcıya bir argüman olarak iletmeniz gerekir.

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

Üzgünüm bundan bahsetmeyi unut. Bu bağlantıyı aldım.
Akendo

2
Firefox Webdriver yerine Chromedriver'ı denedim .. neredeyse 3 kat daha fazla performans kazancı ..
UberNeo

4
Ayrıca, sadece yapıcıya iletilen argüman yoludur olduğunu belirtmek istiyorum ChromeDriver ikili ve değil ChromeDriver ikili içeren dizin (yanlış neler olduğunu bulmaya geçmiş yarım saat boşa).
TheRookierLearner

107

Linux için

  1. Chrome Brwoser'ın son sürümünü yüklediğinizden emin olun-> chromium-browser -version
  2. Değilse, kromun en son sürümünü yükleyin sudo apt-get install chromium-browser
  3. dan krom sürücüsünün uygun sürümünü almak burada
  4. Chromedriver.zip dosyasını açın
  5. Dosyayı /usr/bindizine taşısudo mv chromedriver /usr/bin
  6. /usr/binDizine gitcd /usr/bin
  7. Şimdi, çalıştırılabilir sudo chmod a+x chromedriverolarak işaretlemek gibi bir şey çalıştırmanız gerekir .
  8. son olarak kodu yürütebilirsiniz.

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("http://www.google.com")
    print driver.page_source.encode('utf-8')
    driver.quit()
    display.stop()

1
Çok hoş! Bir not: 64-bit linux çalıştırmama rağmen bunu sadece 32-bit kromsürücü ile çalıştırabildim.
Imran

Ubuntu'da (14.04), krom-chromdriver paketini (örn. Apt-get ile) kurabilir ve kromedriver dosyasının yolunu PATH kabuk değişkenine PATH = "$ {PATH}" ekleyebilirsiniz: / usr / lib / chromium-browser / Bunu .bashrc'nize eklerseniz, selenyum ile her test etmek istediğinizde ayarlamanız gerekmez.
Arpad Horvath

1
aslında bu cevabın çok daha fazla oyu olmalı. temelde bu geckodriver gibi her sürücü için gitmek için bir yol.
holzkohlengrill

Krom tarayıcı sürümüm (Ubuntu 16.04 üzerinde çalışan Ubuntu üzerine kurulu Chromium 67.0.3396.99) olarak belirtiliyor, ancak bağlantının yalnızca 2.0-2.9 sürümleri var. Yardıma ihtiyacım var.
Vaibhav Maheshwari

93

Yalnızca Mac OSX

Devam etmenin daha kolay bir yolu (zaten kurulu olan homebrew'unuz varsayalım , eğer değilse, önce bunu yapın ve homebrew'un hayatınızı daha iyi hale getirmesine izin verin) aşağıdaki komutu çalıştırmaktır:

brew install chromedriver

Bu, sürücüyü yolunuza koymalı ve hepiniz hazır olmalısınız.


Mac üzerinde çalışamaz. selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
wyx

1
@wyx Ortamınız doğru ayarlanmamış olabilir. Koşmayı deneyin brew doctorve bunun bir şey bulup bulmadığını görün.
Jachin

2
Mac'iniz olduğu için mutlu olduğunuzda bu sıcak ve bulanık anlardan biri. Çok kolay.
Kullanıcı

KALP!
Demlemek

52

Pencereler için

ChromeDriver'ı bu doğrudan bağlantıdan indirin VEYA bu sayfadan en son sürümü edinin .

chromedriver.exeDosyayı C:\Python27\Scriptsklasörünüze yapıştırın .

Bu şimdi çalışmalıdır:

from selenium import webdriver
driver = webdriver.Chrome()

23

Pencereler için lütfen chromedriver.exe yerleştirilen altından<Install Dir>/Python27/Scripts/


ve ubuntu'ya nereye koymalı? int /usr/lib/ya da başka bir yerde?
Gaurav Jain

Dosyaya sahip olmak , çalıştığı yere PATHkoymak yeterli değildi . /Scripts/ride.py
Qwerty

1

Google Chrome'da Selenium python testlerini çalıştırmanın 2 yolu vardır. Windows'u (benim durumumda Windows 10) düşünüyorum:

Önkoşul: En son Chrome Sürücüsünü şu adresten indirin: https://sites.google.com/a/chromium.org/chromedriver/downloads

Yol 1:

i) İndirilen zip dosyasını istediğiniz bir dizine / konuma çıkarın
ii) Kodunuzdaki yürütülebilir yolu aşağıdaki gibi ayarlayın:

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

Yol 2:

i) chromedriver.exe dosyasını / Python / Scripts / altına yapıştırın (Benim durumumda klasör: C: \ Python36 \ Scripts)
ii) Şimdi basit kodu aşağıdaki gibi yazın:

self.driver = webdriver.Chrome()

-1

Windows IDE için:

Yolunuz işe yaramazsa, chromedriver.exebu proje yapısında olduğu gibi projenize eklemeyi deneyebilirsiniz .

chromedriver.exe

Sonra chromedriver.exeana dosyaya yüklemeniz gerekir . Bana gelince, ben yüklü driver.exein driver.py.

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

.. anlamına geliyor driver.py'süst dizin

. dizini, driver.py bulunduğu

Umarım bu yardımcı olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.