Python Selenium WebDriver ile Başlangıç Rehberi

Giriş: Otomasyon Dünyasına Adım

Yazılım geliştirme süreçlerinde otomasyon, zamandan tasarruf etmek ve hata payını azaltmak açısından büyük öneme sahiptir. Python, bu konuda sunduğu güçlü kütüphanelerle geliştiricilere oldukça fazla imkan tanır. Özellikle Selenium WebDriver, web uygulamalarını otomatikleştirmek isteyen geliştiriciler için vazgeçilmez bir araçtır. Bu yazıda, Python Selenium WebDriver kullanarak basit bir örnekle otomasyon süreçlerine nasıl başlamanız gerektiğini anlatacağım.

Selenium WebDriver, web tarayıcılarını otomatik olarak kontrol etmenizi sağlar. Böylece web uygulamalarını test edebilir, veri toplayabilir veya kullanıcı davranışlarını simüle edebilirsiniz. Kullanıcı arayüzü testleri, web sayfalarının işlevselliğinin doğrulanması için önemlidir. Python ile birlikte kullanıldığında ise, bu süreç daha basit ve anlaşılır hale gelir. Şimdi, Selenium ile ilgili temel kavramları ve nasıl kullanacağınızı inceleyelim.

Selenium WebDriver Kurulumu

Selenium WebDriver kullanmak için öncelikle birkaç araç ve kütüphaneyi bilgisayarınıza kurmalısınız. Python’un en güncel sürümünü kullanmak, bu süreçte yaşayabileceğiniz sorunları minimize eder. İlk olarak, Selenium kütüphanesini pip ile kurmalısınız. Terminal veya komut istemcinize şu komutu girin:

pip install selenium

Kurulum işlemi tamamlandıktan sonra, bir web tarayıcısına ihtiyacınız olacak. Selenium, farklı tarayıcılarla çalışabilmektedir. En popüler olanı Chrome’dur. ChromeDriver, Chrome tarayıcınızın doğru sürümüne uygun şekilde indirilmelidir. ChromeDriver’ı resmi sayfasından temin edebilirsiniz. İndirdiğiniz dosyayı PATH’inize eklemeyi unutmayın, böylece Selenium düzeltmelerinizi daha kolay bir şekilde yapabilirsiniz.

Basit Bir Web Otomasyon Örneği

Kurulumları tamamladıktan sonra, artık basit bir web otomasyon işlemi gerçekleştirebiliriz. Örneğimize başlamadan önce, Python IDE’nizi veya metin düzenleyicinizi açmanız gerekecek. Aşağıdaki örnekte, basit bir web sayfasını açıp başlık etiketini alacağız:

from selenium import webdriver
from selenium.webdriver.common.by import By

# WebDriver başlatma
driver = webdriver.Chrome()  # Tarayıcıyı aç

driver.get('https://www.example.com')  # Hedef web sayfasını aç

# Sayfanın başlığını alma
page_title = driver.title
print(f'Sayfanın Başlığı: {page_title}') 

# Tarayıcıyı kapatma
driver.quit()

Bu basit örnekte, öncelikle Selenium’un WebDriver modülünü ve gerekli bağlantı biçimlerinin belirtildiği By modülünü içe aktardık. Ardından, Chrome tarayıcısını başlattık ve belirttiğimiz URL’yi açtık. Kullanıcı arayüzü ile etkileşime geçmeyen tarayıcı, otomatik olarak sayfayı yükler. Daha sonra sayfanın başlığını alarak çıktıda gösterdik. Son olarak, tarayıcıyı kapatmayı unutmamak gerekir; bu yüzden driver.quit() komutunu kullandık.

Selenium ile Etkileşim

Otomasyon işlemleri basit bir web sayfasını açmanın ötesine geçebilir. Selenium ile formlar doldurabilir, butonlara tıklayabilir ve elementlerin özelliklerini değiştirebilirsiniz. Örneğin, bir formu doldurmak ve göndermek için aşağıdaki kod parçacığını kullanabilirsiniz:

# Gerekli kütüphaneleri içe aktarma
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# WebDriver başlatma
driver = webdriver.Chrome()

driver.get('https://www.example.com/form')  # Form sayfasını aç

# Form elemanlarına tıklama ve veri girme
input_element = driver.find_element(By.NAME, 'username')  # Username alanını bul
input_element.send_keys('testuser')  # Kullanıcı adını gir

password_element = driver.find_element(By.NAME, 'password')  # Password alanını bul
password_element.send_keys('password123')  # Şifreyi gir

# Formu gönderme
submit_button = driver.find_element(By.ID, 'submit')  # Submit butonunu bul
submit_button.click()  # Butona tıkla

# Tarayıcıyı kapatma
driver.quit()

Bu örnekte, açılan formda kullanıcı adı ve şifre alanlarına veri girdik. Ardından, ‘Gönder’ butonuna tıklayarak formu göndermiş olduk. Selenium ile elemanlara erişmek için farklı yöntemler mevcut. By.NAME, By.ID gibi araçlar, html sayfanızda bulunan elementleri seçmenizi artırır. Bu sayede, uygulamanızın akışını yönlendirmek oldukça kolay hale gelir.

Hata Yönetimi ve Bekleme Süreleri

Otomasyon işlemleri sırasında bazı hatalarla karşılaşabilirsiniz. Örneğin, bir HTML elemanının yüklenmesini beklemeden bu elemana erişmeye çalıştığınızda hata alabilirsiniz. Selenium’da, bu durumlarla başa çıkmanın en iyi yolu bekleme sürelerini kullanmaktır. İki tür bekleme süresi vardır: statik ve dinamik bekleme süreleri.

Statik bekleme süreleri için time.sleep() fonksiyonunu kullanabilirsiniz. Ancak bu, her durumda performans artırmaz. Dinamik bekleme süreleri ise WebDriverWait aracılığıyla uygulanır ve belirli bir koşula kadar beklemenizi sağlar. Aşağıda bir örneği bulunmaktadır:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Dinamik bekleme örneği
wait = WebDriverWait(driver, 10)  # 10 saniye bekle
wait.until(EC.presence_of_element_located((By.ID, 'element_id')))  # Öğe yüklendiğinde beklemeyi sonlandır

Yukarıdaki kodda, belirtilen öğenin varlığı kontrol edilene kadar 10 saniye kadar beklemek üzere bir bekleme nesnesi oluşturduk. Eğer öğe bu süre zarfında yüklenmezse, bir hata alırsınız. Bu durum, daha sağlam ve güvenilir otomasyon senaryoları oluşturmanızı sağlar.

Selenium WebDriver ile İleri Düzey Kullanım

Selenium, sadece temel otomasyon işlemleri için değil, aynı zamanda daha karmaşık senaryolar için de kullanılmaktadır. Örneğin, çerez yönetimi, JavaScript yürütme, sayfalar arası veri aktarımı gibi işlemleri gerçekleştirebilirsiniz. İşte bu özelliklerden bazıları:

  • Çerez Yönetimi: Oturum bilgilerini ve kullanıcı yapılandırmalarını saklamak için çerezlere erişebilirsiniz.
  • JavaScript İle Etkileşim: web sayfasında bulunan JavaScript kodlarını çalıştırarak daha gelişmiş etkileşimler gerçekleştirebilirsiniz.
  • Sayfalar Arası Veri Aktarımı: Bir sayfadan diğerine veri taşıyarak geniş kapsamlı test senaryoları yazabilirsiniz.

Aşağıdaki örnekte, bir JavaScript kodunu çalıştırmayı ve sayfadaki belirli bir öğeyi almak için kullanılan kodu görebilirsiniz:

element = driver.execute_script('return document.getElementById(

Scroll to Top