Selenium, web tarayıcılarını gerçek bir kullanıcı gibi kontrol etmeye yarayan açık kaynaklı bir otomasyon aracıdır. W3C WebDriver standardını kullanır; yazdığın test kodu Chrome, Firefox, Edge ve Safari üzerinde aynı şekilde çalışır. Java, Python, JavaScript, C# ve Ruby ile yazılabilir. En yaygın kullanım alanı, her sürümde elle tekrarlanan regresyon testlerini otomatikleştirmektir.
Selenium WebDriver nedir, nasıl kurulur ve Java, Python, TypeScript ile nasıl kullanılır? Locator stratejileri, wait yapıları, gerçek senaryolar ve mülakat soruları.
🟢 Selenium Nedir? Nasıl Çalışır? — Selenium, bir tarayıcı üzerinde insan parmaklarının yerine geçen W3C standardı bir protokoldür — tıpkı Java'nın JDBC'si gibi: sen standart bir arayüz yazıyorsun, altta kimin sürücüsü olduğu değişiyor (ChromeDriver, GeckoDriver, EdgeDriver). Peki Java'da JUnit
⚙️ Kurulum — Java, Python, TypeScript — Selenium kurulumu, Java'da Maven'a bağımlılık eklemek gibi çalışır — ama bir katman daha var: test kodun, tarayıcı sürücüsüne (ChromeDriver), o da asıl Chrome'a bağlanır. Tıpkı JDBC driver'ı ile veritabanı arasındaki köprü gibi. Peki Java ile Selenium'u zaten
🎯 Locators — Element Bulma Stratejileri — Locator seçimi, Java'da bir koleksiyona erişim yöntemini seçmekle birebir örtüşür: By.id bir Map'te key ile lookup yapmak kadar hızlı (O(1)), By.xpath ise unsorted List'te değer aramak gibi — tüm DOM ağacını gezerek çalışır. Peki her sayfada id var gibi görünü
⚡ Aksiyonlar — Tüm Kullanıcı Eylemleri — Selenium'daki Actions API, Java'daki Builder pattern'in tarayıcı eylemleri için uygulamasıdır: tek tek komut göndermek yerine bir dizi hareketi zincire ekleyip tek seferde `.perform()` ile çalıştırırsın — tıpkı StringBuilder'a append edip sonunda toString() ça
⏳ Wait Stratejileri — Bekleme Yöntemleri — Wait stratejisi, Java'da CompletableFuture üzerinde bloklu get(timeout, SECONDS) çağrısına benzer — ama hangi koşulu beklediğini sen belirlersin. Thread.sleep(3000) ise tarihlenmiş bir Thread.sleep() kullanmak gibi: asıl sonuç 0.5 saniyede gelse de 3 saniye be
🪟 Frames, Alert & Çoklu Pencere Yönetimi — iframe, sayfa içindeki ayrı bir DOM bağlamıdır — tıpkı Java'da bir ClassLoader içine başka bir ClassLoader yüklemek gibi: dış context'ten findElement ile içerideki elementlere erişemezsin, önce driver.switchTo().frame() ile o bağlama geçmen gerekir. Peki sayfa
🏗️ Framework Mimarisi (SOLID + POM) — Bu sekmeye kadar yazdığın her parça (findElement çağrıları, WebDriverWait blokları, @Test metotları) tek tek çalışıyor ama birbirine GEVŞEK bağlı — tıpkı imar planı olmadan büyüyen bir sanayi sitesi gibi: her atölye kendi jeneratörünü kurar, kendi su hattını ç
🛠️ Gerçek Hayat — E-Commerce Test Senaryosu — E2E test senaryosu yazmak, Java'da entegrasyon testi yazmakla aynı mantık üzerine kuruludur: izole unit değil, gerçek bağımlılıklarla birlikte bir kullanıcı akışını uçtan uca doğrularsın. E-ticaret senaryosu bunun en somut örneğidir: giriş → ürün arama → sepet
Sık Sorulan Sorular
Selenium nedir?
Selenium, web tarayıcılarını gerçek bir kullanıcı gibi kontrol etmeye yarayan açık kaynaklı bir otomasyon aracıdır. W3C WebDriver standardını kullanır ve Java, Python, JavaScript, C# ile yazılabilir.
Selenium ile Playwright arasındaki fark nedir?
Playwright, elementin gerçekten tıklanabilir olmasını otomatik bekleyen bir auto-wait mekanizmasına sahiptir; Selenium'da bu bekleme mantığını sen kendin (WebDriverWait ile) kurarsın. Selenium ise daha geniş bir ekosisteme ve daha uzun bir sektör geçmişine sahiptir.
Selenium öğrenmek ne kadar sürer?
Temel locator ve aksiyonları birkaç günde öğrenebilirsin; wait stratejileri, Page Object Model ve framework mimarisi dahil mülakat seviyesine gelmek genelde 4-6 hafta düzenli pratik gerektirir.
Selenium ücretsiz mi?
Evet, Selenium tamamen ücretsiz ve açık kaynaklıdır (Apache 2.0 lisansı). Selenium Grid dahil hiçbir bileşeni için lisans ücreti ödemezsin.
Selenium hangi dilleri destekler?
Resmi Selenium client kütüphaneleri Java, Python, JavaScript (Node.js), C# ve Ruby için mevcuttur. Kurumsal QA projelerinde en yaygın tercih Java'dır.
En sık karşılaşılan Selenium hatası nedir?
`StaleElementReferenceException` — sayfa bir şekilde yeniden render olduğunda, elinde tuttuğun element referansı artık geçerli DOM düğümüne işaret etmez. Çözüm, elementi tekrar bulmak veya doğru wait stratejisini kullanmaktır.
Selenium mülakatında en çok hangi soru sorulur?
Explicit wait ile implicit wait arasındaki fark ve neden ikisinin aynı anda kullanılmaması gerektiği. Ardından Page Object Model'in ne sorunu çözdüğü ve `StaleElementReferenceException` gibi flaky test senaryolarını nasıl çözdüğün sık sorulan takip sorularıdır.