Selenium
- Okunuşu
- selenyum
Kısaca
Selenium, çoğunlukla uçtan uca test için web tarayıcılarını otomatikleştiren, WebDriver API'si birçok dilde bulunan açık kaynaklı bir araç takımıdır.
Selenium nedir?
Selenium, 2004'te ThoughtWorks'te, Jason Huggins'in bir web uygulamasının tekrarlı testlerini otomatikleştirmek için yazdığı bir araçla başladı. Bugün çekirdeği WebDriver'dır: Chrome, Firefox, Safari ve Edge dahil gerçek tarayıcıları her tarayıcının kendi sürücüsü üzerinden kontrol eden bir API. WebDriver protokolü 2018'de bir W3C standardı oldu; bu yüzden tarayıcı üreticileri onu doğrudan uygular.
Testler Java, Python, C#, JavaScript, Ruby ve başka dillerde yazılabilir; bu da Selenium'u ana dili JavaScript olmayan ekiplerde popüler yapar. Bir test bir sayfa açar, öğeleri ID, CSS seçici ya da XPath ile bulur, tıklar, yazar ve görüneni doğrular. Selenium Grid testleri birçok makinede ve tarayıcı sürümünde paralel çalıştırır, Selenium IDE de tarayıcı eylemlerini kaydedip yeniden oynatır.
Uzun geçmişi, çok sayıda mevcut test takımı, her CI sistemi ve bulut test servisiyle entegrasyon ve bol miktarda dokümantasyon demektir. Birçok ticari test platformu da altında Selenium ve WebDriver üzerine kuruludur.
Sık yapılan bir yanlış, Selenium testlerinin doğası gereği kararsız (flaky) olduğunu düşünmektir. Kararsızlık genellikle sayfayı doğru beklemeyen, öğelerin görünmesini açıkça beklemek yerine sabit uyumalar (sleep) kullanan testlerden gelir. Playwright ve Cypress gibi yeni araçlar otomatik bekler; bu, birçok yeni projenin onları seçmesinin büyük bir nedenidir; ama iyi yazılmış Selenium test takımları da aynı ölçüde güvenilir olabilir.
Önemli noktalar
- Selenium gerçek web tarayıcılarını, çoğunlukla uçtan uca testler için otomatikleştirir.
- 2004'te başladı; WebDriver 2018'de bir W3C standardı oldu.
- Testler Java, Python, C#, JavaScript, Ruby ve daha fazlasında yazılabilir.
- Selenium Grid testleri tarayıcılar ve makineler arasında paralel çalıştırır.
- Sabit uyumalar değil açık beklemeler Selenium testlerini güvenilir tutar.
Örnek
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
driver = webdriver.Chrome()
try:
driver.get("https://staging.example.com/login")
driver.find_element(By.ID, "email").send_keys("ada@example.com")
driver.find_element(By.ID, "password").send_keys("correct horse")
driver.find_element(By.CSS_SELECTOR, "button[type=submit]").click()
# Explicit wait instead of time.sleep(): wait until the heading appears
heading = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.TAG_NAME, "h1")))
assert "Dashboard" in heading.text
finally:
driver.quit()Sık sorulan sorular
Selenium ile Playwright arasındaki fark nedir?
Selenium daha eskidir, birçok dili destekler ve standart WebDriver protokolünü kullanır. Playwright daha yenidir, tarayıcıları hata ayıklama protokolleri üzerinden kontrol eder, otomatik bekler ve izleme (tracing) ile paralel çalıştırmayı kutudan çıktığı gibi sunar. İkisi de gerçek tarayıcıları test eder.
Selenium WebDriver nedir?
Selenium'un ana parçasıdır: bir tarayıcıyı programla kontrol etmeye, sayfaları açmaya, öğeleri bulmaya ve tıklama ile yazma gibi kullanıcı eylemlerini taklit etmeye yarayan bir API ve protokol.
Selenium Grid nedir?
Selenium testlerini, testlerden gelen komutları tarayıcı düğümlerine dağıtan bir merkeze (hub) göndererek birçok makinede ve tarayıcıda paralel çalıştırmanın bir yoludur.
İlgili sayfalar
- Uçtan Uca TestTest ve Kalite, s. 35Uçtan uca test, kullanıcı arayüzünden veritabanına ve geri dönüşe kadar tam bir kullanıcı yolculuğunu uygulamanın tamamında çalıştıran otomatik bir testtir.
- PlaywrightTest ve Kalite, s. 20Playwright, Chromium, Firefox ve WebKit'i tek bir API ile yöneten, Microsoft'un uçtan uca test ve tarayıcı otomasyonu için açık kaynaklı framework'üdür.
- CypressTest ve Kalite, s. 5Cypress, web uygulamalarının uçtan uca ve bileşen testlerini tarayıcıda yürüten, otomatik bekleme ve etkileşimli çalıştırıcı sunan JavaScript framework'üdür.
- Test OtomasyonuTest ve Kalite, s. 32Test otomasyonu, testleri kodla çalıştırıp sonuçları denetlemektir; böylece aynı kontroller elle değil, her değişiklikte hızlı ve tutarlı biçimde tekrarlanır.
- Flaky TestTest ve Kalite, s. 8Flaky test, koda hiçbir değişiklik yapılmadan bazen geçen bazen başarısız olan ve sonuçlarına güvenmeyi zorlaştıran otomatik bir testtir.
- Web TarayıcısıWeb Geliştirme, s. 57Web tarayıcısı, sunuculardan web sayfalarını alıp HTML, CSS ve JavaScript'i ekranda gördüğünüz etkileşimli sayfalara dönüştüren uygulamadır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin