Python kullanan Selenium - Geckodriver çalıştırılabilir dosyasının PATH'te olması gerekir

Programlamada yeniyim ve yaklaşık 2 ay önce Python ile başladım ve Sweigart'ın Sıkıcı Şeyleri Python ile Otomatikleştirin metnini gözden geçiriyorum. IDLE kullanıyorum ve selenium modülünü ve Firefox tarayıcısını zaten yükledim. Webdriver işlevini çalıştırmayı denediğimde şunu alıyorum:

from selenium import webdriver
browser = webdriver.Firefox()

İstisna :-

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Python\Python35\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "C:\Python\Python35\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    browser = webdriver.Firefox()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__
    self.service.start()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

Sanırım geckodriver için yolu ayarlamam gerekiyor ama nasıl yapacağımdan emin değilim, bu yüzden biri bana bunu nasıl yapacağımı söyleyebilir mi?

Çözüm

selenium.common.exceptions.WebDriverException: Mesaj: 'geckodriver' çalıştırılabilir dosyasının PATH içinde olması gerekiyor.

Öncelikle selenium kullanarak en son firefox'u çalıştırmak için buradan en son çalıştırılabilir geckodriver'ı indirmeniz gerekecek

Aslında Selenium istemci bağları geckodriver çalıştırılabilir dosyasını sistem PATHinden bulmaya çalışır. Yürütülebilir dosyayı içeren dizini sistem yoluna eklemeniz gerekecektir.

  • Unix sistemlerinde, bash uyumlu bir kabuk kullanıyorsanız, sisteminizin arama yoluna eklemek için aşağıdakileri yapabilirsiniz:

      export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • Windows'ta Path sistem değişkenini güncelleyerek geckodriver çalıştırılabilir dosyasının tam dizin yolunu eklemeniz gerekecektir manuel veya komut satırı(etkili olması için geckodriver çalıştırılabilir dosyasını sistem PATH'ine ekledikten sonra sisteminizi yeniden başlatmayı unutmayın). Prensip Unix'teki ile aynıdır.

Şimdi kodunuzu aşağıdaki gibi yaptığınız gibi çalıştırabilirsiniz :-

from selenium import webdriver

browser = webdriver.Firefox()

selenium.common.exceptions.WebDriverException: Mesaj: Beklenen tarayıcı ikili konumu, ancak varsayılan konumda ikili bulunamadı, 'moz:firefoxOptions.binary' özelliği sağlanmadı ve komut satırında ikili bayrağı ayarlanmadı

İstisna, firefox'u başka bir yere yüklediğinizi açıkça belirtirken, Selenium firefox'u bulmaya ve varsayılan konumdan başlatmaya çalışıyor ancak bulamadı. Aşağıdaki gibi firefox'u başlatmak için açıkça firefox yüklü ikili konum sağlamanız gerekir :-

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
browser = webdriver.Firefox(firefox_binary=binary)
Yorumlar (14)

bu adımlar ubuntu firefox 50'de benim için ÇÖZÜLDÜ.

  1. İndir geckodriver

  2. geckodriver'ı /usr/local/bin içine kopyalayın

Eklemenize gerek YOK

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'
browser = webdriver.Firefox(capabilities=firefox_capabilities)
Yorumlar (6)

Selenium/Python üzerine yayınlanmış kitapların hiçbirinin ve Google üzerinden bu konuda yapılan yorumların çoğunun Mac'te bunu kurmak için izlenmesi gereken yol mantığını net bir şekilde açıklamaması gerçekten üzücü (her şey Windows!!!!). Youtubelerin hepsi "after"you'have got the pathing setup (bana göre ucuz yol!) kısmında toplanıyor. Bu yüzden, siz harika Mac kullanıcıları için, bash yol dosyalarınızı düzenlemek için aşağıdakileri kullanın:

>$touch ~/.bash_profile; open ~/.bash_profile

Ardından şuna benzer bir yol ekleyin.... *# geckodriver için PATH ayarı PATH="/usr/bin/geckodriver:${PATH}" ihracat PATH

Selenium firefox için PATH ayarı

PATH="~/Users/yourNamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/firefox/:${PATH}" ihracat PATH

Firefox sürücüsünde çalıştırılabilir dosya için PATH ayarı

PATH="/Users/yournamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/common/service.py:${PATH}" ihracat PATH*

Bu bende işe yaradı. Benim endişem, Selenium Windows topluluğunun ne zaman gerçek oyunu oynamaya başlayacağı ve biz Mac kullanıcılarını kibirli kulüp üyeliklerine dahil edeceği.

Yorumlar (0)