Selenium ile Python’da Eleman Görünürlüğünü Beklemek

Giriş

Selenium, otomatik testler ve web tarayıcıları üzerinden etkileşimli uygulama testleri için en popüler araçlardan biridir. Python ile birlikte kullanıldığında, geliştiricilere ve test uzmanlarına güçlü bir araç sunar. Ancak, çoğu zaman, bir web sayfasındaki içerik anında yüklenmez. Dolayısıyla, etkileşimde bulunmak istediğiniz eleman henüz görünür durumda olmayabilir. Bu gibi senaryolar için Selenium, belirli koşullar yerine getirildiğinde (örneğin, bir elemanın görünür olması) işlemlere devam etmenizi sağlayan çeşitli bekleme yöntemleri sunar. Bu yazıda, Selenium’da ‘wait until element is visible’ fonksiyonunu nasıl kullanabileceğinizi inceleyeceğiz.

Selenium’da Bekleme Türleri

Selenium’da genel olarak iki tür bekleme mevcut: statik bekleme ve dinamik bekleme. Statik bekleme, belirli bir süre boyunca beklemek anlamına gelir. Örneğin, kodunuza 5 saniye beklemek için bir komut eklemek, işleminiz tamamlanmadan önce 5 saniye boyunca hiçbir şey yapmamanız anlamına gelir. Bu yöntem genellikle tavsiye edilmez çünkü sayfanın yüklenme süresi değişkenlik gösterebilir.

Öte yandan, dinamik bekleme, belirli bir koşul gerçekleşene kadar beklemek anlamına gelir. Selenium, bu amaçla
‘açıklayıcı ve esnek bir yapı sunar. Dinamik beklemenin iki yaygın türü vardır: Bekleyici ve Özel Bekleyici. Bekleyici, belirli bir elemanın belirli bir durumda olup olmadığını kontrol eder ve bu koşul sağlanana kadar beklemeye devam eder.

Bu yazıda, dinamik beklemenin nasıl çalıştığını, Selenium ile birlikte kullanarak nasıl daha verimli bir test süreci oluşturabileceğinizi öğreneceksiniz. Ayrıca, Python programlama dilini kullanarak bu yöntemleri nasıl uygulayabileceğinizi ayrıntılı olarak açıklayacağız.

Bekleyici Kullanarak Görünürlük Kontrolü

Bekleyici, Selenium’da en sık kullanılan ve faydalı dinamik bekleme yöntemidir. Selenium ile Python’da bekleyiciyi kullanmak oldukça basittir. ilk olarak, uygun geçerli bir WebDriver nesnesi oluşturmalısınız. Ardından, bekleyici oluşturmak için ‘WebDriverWait’ sınıfından yararlanabilirsiniz. Bu sınıfın, belirli bir süre boyunca belirli bir koşul yerine getirildiğinde elemanı görüntülemek için kullanılabileceğini unutmayın.

Aşağıda, bir web sayfasındaki belirli bir elemanın görünür hale gelmesi için nasıl bekleyeceğimizi gösteren temel bir örnek verilmiştir:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# WebDriver'ı başlat
driver = webdriver.Chrome()

# Hedef web sayfasına git
driver.get('https://example.com')

# Elemanın görünür olmasını bekle
try:
    element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, 'myElement'))
    )
finally:
    driver.quit()

Burada, ‘WebDriverWait’, 10 saniye boyunca ‘myElement’ ID’sine sahip elemanın görünür olmasını bekler. Eğer eleman bu süre içinde görünür hale gelirse, işlemler devam eder; aksi takdirde bir hata fırlatılır.

Bekleme Süreçisi ve Çeşitleri

Bekleyici, yalnızca görünürlük durumunu kontrol etmekle kalmaz; aynı zamanda daha karmaşık durumları yönetmeyi de sağlar. Örneğin, bir zamanlayıcı başlangıcından itibaren belirli bir süre içinde görünür olmasını beklemek isteyebilirsiniz. Bunun için, ‘WebDriverWait’ sınıfındaki farklı durumları dikkate alarak gerekli ayarlamaları yapabilirsiniz. Örnek olarak, şunları kontrol edebilirsiniz:

  • Elemanın mevcut olup olmadığı
  • Elemanın etkin (clickable) olup olmadığı
  • Elemanın görünür olup olmadığı

Aşağıdaki örnekte, bir elemanın belirli bir süre içinde mevcut olup olmadığını kontrol eden bir bekleyici gösterilmektedir:

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'myElement'))
)

Bu durumda, elemanın yalnızca sayfada var olup olmadığını kontrol edilmekte, görünürlük veya etkinlik durumları dikkate alınmamaktadır. Bu tür durum kontrolleri, testlerinizi daha elastik hale getirerek farklı senaryoları kolayca yönetmenizi sağlar.

Selenium’da Özel Bekleyici Kullanımı

Selenium, standart bekleyicilerin yanı sıra özel bekleyiciler oluşturma olanağı da sunar. Bu, performansı artırırken özel durumları daha iyi yönetmenizi sağlar. Özellikle, belirli bir koşul oluşturmaya veya birden fazla durumu kontrol etmeye ihtiyaç duyduğunuz durumlarda bu özellik oldukça faydalıdır.

Özel bekleyici oluşturmak için ‘WebDriverWait’ sınıfını kullanabilir ve belirli durumlar için bekleme koşullarını tanımlayabilirsiniz. Özel bekleyici oluşturmak için aşağıdaki adımları takip edebilirsiniz:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.AbstractWait import WebDriverException

class CustomWait:
    def __init__(self, driver):
        self.driver = driver

    def until_element_is_visible(self, locator):
        return WebDriverWait(self.driver, 10).until(
            EC.visibility_of_element_located(locator)
        )

Yukarıdaki örnekte, bir özel bekleyici sınıfı oluşturarak, belirli bir lokasyonun görünürlük durumunu kontrol edebiliriz. Bu, kodunuzun okunabilirliğini artırırken belirli ihtiyaçlarınıza göre özelleştirmenizi sağlar.

Hata Yönetimi ve Geri Dönüşler

Selenium kullanırken karşılaşabileceğiniz durumlar arasında elemanın görünür olmaması veya bekleme süresinin aşılması gibi hatalar da vardır. Bu gibi hataları yönetmek için try-except blokları kullanarak, hata durumlarında ne yapılacağını açık bir şekilde tanımlamak önemlidir. Aşağıdaki örnek, görünürlük beklerken karşılaşabileceğiniz bir hatayı nasıl yönetebileceğinizi göstermektedir:

try:
    element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, 'myElement'))
    )
except TimeoutException:
    print('Eleman görünür hale gelmedi!')
finally:
    driver.quit()

Bu şekilde, bir elemanın belirli bir süre zarfında görünür olup olmadığını kontrol ediyorsanız, eğer görünmezse kullanıcıya bilgi vererek daha iyi bir kullanıcı deneyimi sağlayabilirsiniz.

Sonuç

Web otomasyon testlerinde, sürükleyici ve verimli bir deneyim sunmak için doğru bekleme yöntemlerini kullanmak oldukça önemlidir. Selenium ile Python sayesinde, ‘wait until element is visible’ gibi dinamik bekleme tekniklerini kullanarak, uygulamanızın daha sağlam ve hatasız çalışmasını sağlayabilirsiniz. Gösterdiğimiz örnekler ve yaklaşımlar, farklı koşulları yönetmek ve test süreçlerinizi optimize etmek için sadece bir başlangıçtır. Unutmayın, iyi bir test süreci, kullanıcı deneyimini artırırken aynı zamanda zamanınızı da tasarruf etmenizi sağlar.

Bir sonraki projenizde bu teknikleri uygulamayı deneyin ve sonuçları gözlemleyin. Hataları hızlı bir şekilde çözebilmek ve daha güvenilir bir sistem oluşturmak adına, Selenium’un sağladığı dinamik bekleyici araçları bilmek ve uygulamak kesinlikle size avantaj sağlayacaktır.

Scroll to Top