Giriş
Selenium, web uygulamalarını otomatikleştirmek ve test etmek için kullanabileceğiniz güçlü bir araçtır. Python ile birlikte kullanıldığında, kullanıcı arayüzlerini test etme, veri çekme veya web uygulamalarını otomatik olarak kontrol etme gibi birçok olanak sunar. Bu makalede, Python ile Selenium kullanarak CSS seçicilerini nasıl etkili bir şekilde kullanabileceğinizi inceleyeceğiz. CSS seçicilerinin web sayfalarında öğeleri tanımlama ve etkileme konusundaki rolleri üzerinde duracağız.
Öncelikle CSS (Cascading Style Sheets) seçicileri, HTML öğelerini seçmek için kullanılan desenlerdir. Selenium ile bu seçiciler sayesinde sayfadaki belirli öğelere erişebilir, etkileşimde bulunabilir veya bunların özelliklerini değiştirebilirsiniz. CSS seçicileri, XPath gibi diğer seçme yollarına göre daha basit ve daha karmaşık durumlar için daha verimli olabiliyor.
Bu yazının devamında, CSS seçicilerinin ne olduğu, nasıl kullanılacağı ve Python ile Selenium ile birlikte nasıl entegre edileceği hakkında ayrıntılı bilgi vereceğiz. Adım adım örneklerle CSS seçicilerini kullanma tekniklerini öğreneceksiniz.
CSS Seçicilerin Temelleri
CSS seçicileri, doğru öğeleri seçmek için kullanılan bir dizi kurallar ve sözdizimi içerir. CSS seçicileri, temel olarak element seçicileri, sınıf (class) seçicileri, id seçicileri, gruplama seçicileri ve daha fazlasını içermektedir. Element seçicileri, belirli bir HTML etiketini seçerken kullanılırken, sınıf seçicileri sınıf isimleri ile öğeleri hedef alır. Örneğin, .example
sınıfına sahip tüm öğeleri seçmek için .example
seçicisini kullanabilirsiniz.
ID seçicileri ise sayfadaki belirli bir öğeyi hedef almak için kullanılır ve #id_name
ile ifade edilir. CSS seçicileri, adlandırma veya hiyerarşi gibi düzenlemeleri kullanarak daha eski seçeneklerden çok daha zengin ve detaylı seçim yapabilmenizi sağlar. Bu sayede karmaşık kullanıcı arayüzlerini otomatikleştirmek için gerekli olan esnekliği elde edebilirsiniz.
Örneğin, bir butonu yalnızca belirli bir sınıftaki öğeler üzerinde çalışarak seçmek isteyebilirsiniz. Bunu CSS seçicileri ile yapabilirsiniz. CSS seçicileri sayesinde HTML öğelerinin konumuna veya yapısına odaklanarak seçimler yapabilirsiniz.
Python ile Selenium Kurulumu
Python ile Selenium kullanmaya başlamak için öncelikle birkaç bileşeni kurmanız gerekecek. Python’u sisteminizde kurduysanız, Selenium’u kurmak için pip paket yöneticisini kullanabilirsiniz. Aşağıdaki komutu terminalde çalıştırarak Selenium’u kurabilirsiniz:
pip install selenium
Kurulumdan sonra Selenium’u kullanabilmek için bir web sürücüsüne ihtiyacınız var. Örneğin, Chrome tarayıcısı için ChromeDriver’ı kullanabilirsiniz. ChromeDriver, Chrome tarayıcısıyla etkileşim sağlamak için gerekli olan yürütebilir bir dosyadır. İlgili ChromeDriver versiyonunu [ChromeDriver resmi web sitesinden](https://chromedriver.chromium.org/downloads) indirmeniz gerekiyor. İndirilen dosyayı herhangi bir dizine koyun ve yolu not edin.
Sonra, Python dosyanızda Selenium ile birlikte kullanmak üzere gerekli kütüphaneleri içe aktarmanız gerekecektir. Aşağıda bir örnek verilmektedir:
from selenium import webdriver
Bu adımları tamamladıktan sonra, Python ile Selenium kullanarak basit bir otomasyon senaryosu oluşturmaya başlayabilirsiniz.
CSS Seçicileri ile Öğeleri Seçme
Web sayfasındaki öğeleri CSS seçicileri kullanarak seçmek için öncelikle bir WebDriver instance’ı oluşturmanız gerekiyor. Aşağıdaki kod parçasında ChromeDriver ile bir tarayıcı başlatıyoruz:
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
Bu komut, belirttiğiniz yolda bulunan ChromeDriver’ı çalıştırır. Bu aşamadan sonra, istediğiniz bir web sayfasını açabilirsin:
driver.get('https://example.com')
Artık sayfa yüklendikten sonra CSS seçicileri ile öğeleri seçebiliriz. Örneğin, bir butonu class’ına göre seçmek isterseniz şu şekilde yazabilirsiniz:
button = driver.find_element_by_css_selector('.example-button')
Bu satır, example-button
sınıfına sahip bir butonu seçici ile temsil eder. Seçtiğiniz öğeye istediğiniz özelliği uygulamak veya üzerinde bir işlem yapmak için bu öğeyi kullanabilirsiniz.
CSS Seçicileri ile Etkileşime Geçme
Seçtiğiniz öğelerle etkileşime geçmek için, Selenium’un sunduğu bir dizi fonksiyonu kullanabilirsiniz. Örneğin, bir butona tıklamak için aşağıdaki gibi bir yöntem kullanabilirsiniz:
button.click()
Bu, seçilen BUTON öğesine tıklama komutu verir. Aynı şekilde, bir metin kutusuna metin girmek için de aşağıdaki gibi bir kod yazabilirsiniz:
input_field = driver.find_element_by_css_selector('#input-id')
input_field.send_keys('Merhaba Dünya!')
Burada, input-id
ile belirlenen metin kutusuna ‘Merhaba Dünya!’ metnini gönderiyoruz. CSS seçicileri ile birden fazla öğe seçmek de mümkündür. Örneğin, belirli bir sınıfa ait tüm öğeleri seçmek için:
buttons = driver.find_elements_by_css_selector('.button-class')
Bu komut, button-class
sınıfına sahip olan tüm butonları bir liste şeklinde döndürür, böylece liste üzerindeki her bir buton için döngü oluşturabilirsiniz.
Hatalı Senaryolar ve Çözümleri
Selenium kullanırken bazı yaygın hatalarla karşılaşmanız mümkün. Örneğin, bir öğeyi bulamadığınızda NoSuchElementException
hatası alabilirsiniz. Bu durumla karşılaşmamak için kodunuza bekleme süreleri eklemek iyi bir çözüm olabilir. Bekleme süreleri, öğenin yüklenmesi için biraz zaman tanıyarak doğru seçim yapmanıza olanak sağlar.
Eklemek istediğiniz bir bekleme süresi aşağıdaki gibi yapılabilir:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '.example-button'))
)
Burada WebDriverWait
sınıfı, 10 saniye boyunca belirttiğiniz öğenin yüklenmesini bekler. Öğenin görünür hale gelmesi durumunda etkileşime geçebilirsiniz. Bu şekilde yazacağınız kod, daha kararlı ve hata toleransı yüksek bir hale gelecektir.
Örnek Proje: Otomatik Form Doldurucu
Örnek bir proje olarak, basit bir otomatik form doldurucusu oluşturabiliriz. Öncelikle, bir web sayfasına gitmesi gerekiyor ve form alanlarını CSS seçicileri ile seçerek doldurmalısınız. Aşağıda bu işlemi gerçekleştiren basit bir kod örneği verilmiştir:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get('https://example.com/form')
# E-posta alanına metin gir
email_input = driver.find_element_by_css_selector('#email')
email_input.send_keys('[email protected]')
# Şifre alanına metin gir
password_input = driver.find_element_by_css_selector('#password')
password_input.send_keys('mypassword')
# Gönder butonuna tıkla
submit_button = driver.find_element_by_css_selector('.submit-button')
submit_button.click()
Bu kod, öncelikle belirtilen URL’ye giderek form alanlarını doldurur ve formu göndermek için gerekli tıklamayı yapar. CSS seçicileri sayesinde doğru öğeleri seçerek etkileşimde bulunabilirsiniz. Otomasyon sürecini bu şekilde tanımlayarak daha karmaşık senaryolar oluşturabilirsiniz.
Sonuç
Python ve Selenium birlikte kullanarak CSS seçicilerini öğrenmek ve uygulamak, web otomasyonu ve test sürecinizi büyük ölçüde kolaylaştırabilir. CSS seçicileri, belirli öğeleri seçmek ve etkileşimde bulunmak için basit ve anlaşılır bir yol sunar. Bu makalede, CSS seçicilerinin temellerini öğrendik, selenium kurulumundan bahsettik ve öğeleri seçme, etkileşime geçme gibi konuları inceledik.
Artık CSS seçicilerini kullanmayı öğrenmek, bir dizi karmaşık otomasyon senaryosu geliştirmek için size yardımcı olacaktır. Örneklerle de gösterdiğimiz gibi, otomasyon süreçlerinizi geliştirmek ve daha verimli hale getirmek için CSS seçicilerini Python ile kombinleyebilirsiniz.
CSS seçicileri ile daha güçlü ve etkili web otomasyonları oluşturma fırsatını kaçırmayın! Özellikle test süreçlerinizi hızlandıracak ve hata oranınızı düşürecektir. Kendi projelerinizi geliştirmeye başladığınızda, CSS seçicileri ve Selenium’un sunduğu olanakları keşfetmekten keyif alacaksınız.