Selenium'da "TypeError: 'module' object is not callable" hatası alıyorum

Selenium kütüphanesini “pip install selenium” komutu ile windows’a kurdum. Spyder IDE ile selenium kütüphanesini çağırmak istediğimde böyle bir kütüphane yok hatası alıyorum. Lakin manuel olarak dosya konumuna baktığımda selenium kütüphanesinin kurulu olduğunu gördüm.

Yeni kullanıcı olduğum için ikinci resmi(dosya konumunu) yorum olarak ekliyorum

Ekran Alıntısı

Genelde bilgisayarda birden fazla Python sürümü var ise bunu yapıyor. Ve conda üstünde pip ile yükleme yaptı iseniz bir de “conda install selenium” dener misiniz? Sisteminizdeki Python ile IDE üstünde kullanılan Python çakışıyor olabilir.

Merhaba,

Bu ModuleNotFoundError: No module named ‘selenium’ olurdu ama sizin aldığınız TypeError: “module” object is not callable resimden anladığımız kadarıyla. Yani selenium kütüphane olarak algılanıyor ama sonrasında onu kullanırken bir hata alıyorsunuz.

Sebebi webdriver.Chrome() demek istemiş olmanız olabilir webdriver.chrome() yerine. Küçük harfli olan bir “modül” iken büyük harfli olan bir "sınıf"a tekabül ediyor. Sınıfı çağırabiliriz (call edebiliriz, yani callable’dır) sonuna parantez ekleyerek ve o sınıftan bir nesne döndürülür; modül ise çağrılamaz (callable değildir) ve aldığınız hatayı alırız.

webdriver.Chrome() yazdıktan sonra da WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see ChromeDriver - WebDriver for Chrome hatası gelebilir; söylediği siteyi ziyaret edebilirsiniz :ğ ve yine olmazsa burada bahsedebilirsiniz.


Bundan sonraki paylaşımlarınızda (olursa) kodlarınızı/hata çıktılarınızı resim yerine metin olarak
burada anlatılan yollardan biriyle buraya aktarabilirseniz veya şurada formatlayıp sonucu buraya tekrar yazabilirseniz size yardım edilme ihtimalini artırabilirsiniz. Örneğin karşıdaki kişiler kodunuzu/hata mesajınızı kopyalama fırsatına sahip olur.

1 Beğeni

ModuleNotFoundError İlk başta bu hatayı alıyordum, lakin sonradan dosyayı masaüstünde oluşturduğum için yerini bulamadığını düşünerek selenium kütüphanesini masaüstüne kopyaladım. Bu yöntem “ModuleNotFoundError” hatasını almamı engelledi. Lakin bu seferde resimdeki gibi “TypeError” hatası alıyorum.

İkinci paragrafta anlattığınız gibi büyük küçük harf karışması olmuş. Bu hatayı almamın sebebi, webdriver.Chrome() yerine webdriver.chrome() yazmammış. Yazdıklarınız doğrultusunda işlemleri yaptığımda çalıştığını gördüm. Yardımınız için teşekkür ederim.

Son olarak şunuda sormak isterim:
Birinci paragrafta da anlattığım olay üzerine, oluşturduğum insbot.py dosyası masaüstünde olduğu için selenium dosyasına ulaşamıyor sanırım. Bu sorunu Selenium kütüphanesini masaüstüne kopyalayarak hallettim. Bu sorunu daha farklı bir şekilde halledebilir miydim? uzantı göstererek import etmek gibi.

Ek olarakta, insbot.py dosyasını başka bir bilgisayarda açmaya kalkıştığım zaman o bilgisayarda selenium kütüphanesi olmadığı için hata verecek sanırım. Bu hatayı engellemek için koda selenium install komutumu yazmalıyım? Yoksa başka yöntemleri de var mıdır?

Evet, sizin kütüphaneyi programınızın dizine taşımanıza gerek olmamalı, Python onun yerini görebilmeli. Sizdeki durum yukarıda sayın nickzsche’nin bahsettiği birden fazla Python versiyonunun yüklü olmasından kaynaklanıyor olsa gerek.

İkinci gönderinizde paylaştığınız ekran görüntüsünden hareketle şu adımları izleyerek Spyder’ın kullandığı Python versiyonunun selenium’un yüklü olduğu versiyon olmasını sağlayabilirsiniz:

  • Spyder’ı açarsınız

  • Yukarıdaki menüde “Tools” var, oradan "Preferences"a gelirsiniz

  • "Use the following interpreter"ı seçip sağdaki dosya seçme şeyine tıklarsınız

  • Sonra ikinci gönderinizde paylaştığınız dizinin iki üstünde yani C:\Users\USERNAME\AppData\Local\Programs\Python\Python310 dizininde bir python.exe (veya python3.exe veya benzeri) bulursunuz, onu seçebilirsiniz

Bu arada Spyder’ı Anaconda dahilinde mi kullanıyorsunuz? Öyleyse Anaconda ile gelen Python üzerinden selenium’u yüklemeniz daha makul olabilir; öyle değilse yukarıdaki adımlar uygun olabilir.

.exe formatına çeviriyor bazıları, sizde öyle bir şey mi hedefliyorsunuz? Yoksa evet o bilgisayarda da selenium’un yüklü olduğunu garanti etmek gerekir. Bir try/except ile bunu programınıza iliştirebilirsiniz.