Giriş
Günümüz dijital dünyasında, web otomasyonu, yazılımcılar ve veri analistleri için vazgeçilmez bir araç haline geldi. Selenium, web tarayıcıları üzerinde otomatik testler ve görevler oluşturmak için en popüler kütüphanelerden biridir. Python ile entegrasyonu, kullanıcı dostu arayüzü ve geniş veri türü desteği sayesinde, Selenium Python geliştiricileri arasında yoğun bir şekilde kullanılmaktadır. Bu yazıda, Python 3.6 ile Selenium kullanmanın temellerini öğrenecek, bu kütüphanenin kurulumundan otomasyon senaryolarına kadar adım adım bir yol haritası oluşturacağız.
Selenium Nedir ve Neden Kullanılır?
Selenium, web tarayıcıları üzerinde etkileşimde bulunmak için kullanılan açık kaynaklı bir otomasyon aracıdır. Farklı tarayıcıları destekleyen bu kütüphane, kullanıcıların web sayfalarında gezinme, form doldurma, buton tıklama gibi eylemleri otomatik olarak gerçekleştirmesine olanak tanır. Test otomasyonunun yanı sıra, veri girişi, sayfaların kazınması ve web uygulamalarının performans değerlendirmesi gibi çeşitli amaçlar için de kullanılabilir.
Selenium’un en büyük avantajlarından biri, çok çeşitli programlama dilleri ile, özellikle Python ile entegre edilebilmesidir. Python, sadeliği ve okunabilirliği ile dikkat çeker, bu da onu başlangıç seviyesindeki ve deneyimli geliştiriciler için mükemmel bir seçenek haline getirir. Ayrıca, Selenium, gerçekten birçok platformda çalışabilir; bu da geliştiricilere daha fazla esneklik sağlar.
Örneğin, eğer bir web uygulamanız varsa ve bu uygulamanın birden fazla tarayıcıda düzgün çalıştığından emin olmak istiyorsanız, Selenium ile otomatik testler yazmak işleri büyük ölçüde kolaylaştırır. Bu şekilde manuel test sürecini azaltarak zamandan tasarruf edebilir ve daha güvenilir sonuçlar elde edebilirsiniz.
Python 3.6 ile Selenium Kurulumu
Python 3.6 ise 2016 yılında piyasaya sürülen ve Python’un popüler bir versiyonudur. Yazılım geliştirme dünyasında özellikle Python 3.6 ile Selenium kütüphanesini kullanabilmek için öncelikle gerekli ortamı hazırlamamız gerekiyor. Bu bölümde, Python 3.6 ortamında Selenium kütüphanesinin nasıl kurulacağını adım adım öğreneceğiz.
İlk adım olarak, Python’un sisteminizde kurulu olduğunu doğrulayın. Terminal veya komut istemcisine python --version
yazarak Python’un versiyonunu kontrol edebilirsiniz. Eğer kurulu değilse, Python’un resmi web sitesinden Python 3.6’yı indirip kurabilirsiniz.
Selenium kütüphanesini kurmak için, Python’un pip yöneticisini kullanacağız. Terminal veya komut istemcisinde aşağıdaki komutu girerek Selenium’u kurabilirsiniz:
pip install selenium
. Bu komut, Selenium kütüphanesinin en güncel sürümünü yükleyecektir. Eğer belirli bir sürüm yüklemek isterseniz, sürüm numarasını komutun sonuna ekleyerek bunu gerçekleştirebilirsiniz, örneğin: pip install selenium==3.141.0
.
Selenium ile İlk Web Otomasyonu
Kurulumdan sonra, Selenium ile bir web sayfasında basit bir otomasyon gerçekleştirebilmek için gerekli temel kodu yazmanın zamanı geldi. Aşağıda, bir web tarayıcısını başlatıp belirli bir URL’ye gitmeyi gösterecek bir Python örneği bulabilirsiniz:
from selenium import webdriver
# Tarayıcıyı başlat
driver = webdriver.Chrome() # Chrome tarayıcısı için
# Belirli bir URL'ye git
driver.get('https://www.example.com')
# Tarayıcıyı kapat
driver.quit()
Yukarıdaki kodda, Selenium’un webdriver modülünü içe aktarıyoruz ve ardından bir Chrome tarayıcı örneği oluşturuyoruz. get()
işlevi ile istediğimiz URL’ye gidiyoruz. İşimiz bittiğinde quit()
metodu ile tarayıcıyı kapatıyoruz.
Tarayıcının doğru çalışması için sisteminizde ChromeDriver’ın da yüklü olması gerekmektedir. ChromeDriver, Chrome tarayıcısının arka planda çalışmasını sağlar. ChromeDriver’ı buradan indirebilir ve sistemi için uygun sürümü seçerek kurulum yapabilirsiniz.
Web Sayfalarında Elementlerle Etkileşim
Bir web sayfasında otomasyon yaparken, belirli ögelerle etkileşime geçmemiz gerekmektedir. Örneğin, butonlara tıklamak, metin alanlarına veri girmek veya seçim kutularını kullanmak gibi işlemleri gerçekleştirebiliriz. Selenium, bu tür etkileşimler için çeşitli metodlar sunar.
Aşağıda, bir arama motorunda arama yapmayı simüle eden bir örnek bulunmaktadır:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# Tarayıcıyı başlat
driver = webdriver.Chrome()
# Arama motoruna git
driver.get('https://www.google.com')
# Arama kutusunu bul ve değer gir
search_box = driver.find_element(By.NAME, 'q')
search_box.send_keys('Python Selenium')
search_box.send_keys(Keys.RETURN)
# Sonuçların yüklenmesi için süre ver
time.sleep(2)
# Tarayıcıyı kapat
driver.quit()
Bu örnekte, Google sayfasına gidiyoruz ve arama kutusunu bulup içerisine ‘Python Selenium’ yazarak Enter tuşuna basıyoruz. Metin alanına erişmek için find_element()
metodunu kullanıyoruz. Son olarak, iki saniyelik bir beklemenin ardından tarayıcıyı kapatıyoruz.
Beklemeler ve Hata Yönetimi
Otomasyon senaryolarında, web sayfalarının ve ögelerin yüklenmesi zaman alabilir. Selenium, bekleme mekanizmaları ile bu durumları yönetmemize olanak tanır. İki temel bekleme türü vardır: statik bekleme ve dinamik bekleme.
Statik bekleme, belirli bir süre boyunca beklemek için kullanılır; bu yöntem genellikle time.sleep()
kullanılarak gerçekleştirilir. Ancak bu yöntem, web sayfasının yüklenme süresine bağımlı olduğu için pek önerilmez.
Dinamik bekleme ise, bir ögenin sayfada görünmesini beklemek için kullanılır. Selenium’un WebDriverWait sınıfı bu iş için idealdir. Aşağıdaki örnekte, bir butonun tıklanabilir olmasını bekleyeceğiz:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Bekleme nesnesi oluştur
wait = WebDriverWait(driver, 10)
# Butonun tıklanabilir olmasını bekle
button = wait.until(EC.element_to_be_clickable((By.ID, 'submit-button')))
button.click()
Bu örnekte, butonun tıklanabilir hale gelmesini bekliyoruz. 10 saniyelik bir süre tanıyoruz; bu süre zarfında buton tıklanabilir hale gelmezse bir TimeoutException
hatası ile karşılaşırız.
Özelleştirilmiş Hata Yönetimi
Geliştiriciler, otomasyon senaryolarında karşılaşabilecekleri hataları etkili bir şekilde yönetmek amacıyla özel hata yönetimleri oluşturabilirler. Hataları ele almak, daha sağlam ve güvenilir bir otomasyon süreci sağlar.
Bunun için genellikle try-except
blokları kullanılır. Örneğin, bir web elementine erişirken bir hata oluşursa, alternatif bir işlem yapmamız veya hatayı düzgün bir şekilde kaydetmemiz gerekebilir:
try:
element = driver.find_element(By.ID, 'some-id')
element.click()
except Exception as e:
print(f'Hata oluştu: {e}')
Yukarıdaki kodda, belirli bir elemente erişmeye çalışıyoruz. Eğer element yoksa veya başka bir hata oluşursa, bu durumu except
bloğunda ele alıyoruz. Hata mesajını yazdırarak durumu takip edebiliriz.
Sonuç ve İleri Adımlar
Python 3.6 ile Selenium kullanarak web otomasyonu için temel bilgilere sahip olduk. Yukarıda ele aldığımız konular, otomasyon dünyasına giriş yapmak isteyenler için iyi bir başlangıç noktasıdır. Selenium ile web sayfalarındaki etkileşimleri, dinamik beklemeleri ve hata yönetimlerini öğrenerek daha karmaşık senaryolar geliştirmek mümkündür.
Önümüzdeki adımlarda, daha gelişmiş otomasyon senaryoları, veri kazıma uygulamaları veya test senaryoları yazmayı keşfedebilirsiniz. Otomasyon becerilerinizi geliştirdikçe, projenizde daha karmaşık ve etkili çözümler üretebileceksiniz.
Unutmayın, sürekli denemek ve farklı senaryolar üzerinde çalışmak, en hızlı en iyi öğrenme yoludur. Kendi projelerinizde Selenium kullanarak, öğrenmeye ve gelişmeye devam edin.