Selenium anlayamadığım sorun

Öncelikle herkese iyi forumlar.
Yeni selenium öğrenmeye başladım ama driver hatası alıyorum yardım edeceklere şimdiden teşekkür ederim

kod:

from selenium import webdriver
import time
driver_path = "/home/tuncay/Masaüstü/geckodriver"

driver = webdriver.Firefox(driver_path)

time.sleep(5)

driver.quit()

sorun:

tuncay@tuncay-Aspire-ES1-531:~/Dizin/Python$ python3 NYP.py 
Traceback (most recent call last):
  File "NYP.py", line 5, in <module>
    driver = webdriver.Firefox(driver_path)
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 151, in __init__
    firefox_profile = FirefoxProfile(firefox_profile)
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/firefox_profile.py", line 80, in __init__
    ignore=shutil.ignore_patterns("parent.lock", "lock", ".parentlock"))
  File "/usr/lib/python3.5/shutil.py", line 303, in copytree
    names = os.listdir(src)
NotADirectoryError: [Errno 20] Not a directory: '/home/tuncay/Masaüstü/geckodriver'


“driver_path” i kontrol edin. Sanırım yanlış yazmışsınız.

Hayır driver konumu doğru

Belki de tükçe karakterden dolayıdır. Hata böyle bir dizin yok diyor. geckodriver’ı Tuncay klasörüne taşıyıp deneyin.

Bu hata oldu

Traceback (most recent call last):
  File "NYP.py", line 5, in <module>
    driver = webdriver.Firefox(driver_path)
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 151, in __init__
    firefox_profile = FirefoxProfile(firefox_profile)
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/firefox_profile.py", line 80, in __init__
    ignore=shutil.ignore_patterns("parent.lock", "lock", ".parentlock"))
  File "/usr/lib/python3.5/shutil.py", line 303, in copytree
    names = os.listdir(src)
NotADirectoryError: [Errno 20] Not a directory: '/home/tuncay/geckodriver'
driver = webdriver.Firefox(executable_path=driver_path)

Bunu bi deneyin.

1 Beğeni

Sorun hala devam ediyor

@ibrahimcetin’in verdiği kodda aldığınız hata ne?

Traceback (most recent call last):
  File "NYP.py", line 5, in <module>
    driver = webdriver.Firefox(executable_path=driver_path)
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
OSError: [Errno 8] Exec format error

Linux exesi degil herhal. Driver’in dogrudan calistirilabilir olmasi gerekiyor diye hatirliyorum.

Resmi bir paketi yok muydu?

Burada biraz konuşulmuştu sanırım:

Burdan geckodriver linux.tar.gz yi indirmiştim

Sonda kullandığınız geckodriver bir klasör mü yoksa dosyanın kendi ismi mi? Çünkü zip dosyasından çıkardığınız dosyanın ismi de geckodriver ve uzantısı yok.Yani geckodriver dosyasını geckodriver isminde bir klasöre mi koydunuz yoksa sondaki geckodriver dosya mı?

Diyelim aynı dizinde geckodriver dosyası ve çalıştıracağınız python dosyası var. Adres kısmına tek bir nokta koymanız yeter.

driver = webdriver.Firefox(".")

Tavsiyem, geckodriver’ı /usr/bin, gibi bir yere kopyalamanız. O zaman her defasında webdriver.Firefox(".") gibi sürekli yol tanımlamak zorunda kalmazsınız.

Veya ev dizininde .bin isminde bir tane klasör oluşturun, geckodriver gibi her yerden erişilmesini istediğiniz dosyalarınızı buraya atın, sonra da komut satırına aşağıdaki kodu yazın.

export PATH="$HOME/.bin:$PATH"
1 Beğeni

geckodriver uzantısız bir dosya açamıyorum zaten

dediğim gibi geckodriver'ın bulunduğu dizin için yukarıdaki komutu yazın, bir daha deneyin isterseniz. Yani .bin ifadesi yerine dosya hangi dizindeyse o dizinin ismini verin.

1 Beğeni

Çalıştırılan py dosyası ile aynı konuma koydum ve

driver = webdriver.Firefox(".")

yaptım ve şu hatayı aldım

Traceback (most recent call last):
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "Selenium.py", line 4, in <module>
    driver = webdriver.Firefox(".")
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 83, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Peki geckodriver~/.local/bin dizinine atın. Sonra da driver = webdriver.Firefox(".") satırındaki "." karakterini kaldırın, driver = webdriver.Firefox() haline getirin ve bir daha deneyin.

1 Beğeni

Bahsettiğiniz şeyleri bu videodakinlere benziyor ise yaptım ama şu hata oldu yine

Traceback (most recent call last):
  File "Selenium.py", line 4, in <module>
    driver = webdriver.Firefox()
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
OSError: [Errno 8] Exec format error

İşletim sisteminiz hakkında bilgi verir misiniz? (32bit, 64bit, versiyon falan)

1 Beğeni

Ubuntu 16.04 32 bit
Sorun 64 indirmem gibiymiş fakat 32 bit indirdiğimde ve denediğmde şu sorun oldu

Traceback (most recent call last):
  File "Selenium.py", line 4, in <module>
    driver = webdriver.Firefox(executable_path="/home/tuncay/Masaüstü/geckodriver/")
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/home/tuncay/.local/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
NotADirectoryError: [Errno 20] Not a directory