🖱️ Temel Aksiyonlar — Selenium ile Karşılaştırma
Temel Aksiyonlar — Selenium ile: Playwright aksiyonları, bir GPS navigasyon sisteminin "dörtlü onay katmanı" gibi çalışır: adres girilir, sistem rotayı hesaplar, aracın ilerleyip
Playwright aksiyonları, bir GPS navigasyon sisteminin "dörtlü onay katmanı" gibi çalışır: adres girilir, sistem rotayı hesaplar, aracın ilerleyip ilerlemediğini kontrol eder ve hedefe ulaşılınca seni uyarır — her adımda bekleme ve doğrulama otomatiktir. Peki Selenium'da neden bu kadar çok bekleme kodu yazmak gerekiyordu? Selenium, bir taksimetre gibi sadece komutu iletir ve sonucu beklemez; element DOM'a girmiş ama henüz etkileşilebilir değilse "element not interactable" hatası alırsın ve tüm sorumluluğu sana bırakır. Java'da driver.findElement(By.id("btn")).click() yazdığında, element DOM'da var ama görünmüyor veya disabled ise test çöker; Playwright'ta page.locator("#btn").click() yazarsın ve Playwright element hem görünene hem enabled olana hem de stable konuma gelene kadar kendi kendine bekler. QA gerçeği şu: SPA (Single Page Application) testlerinde bir butona tıkladıktan sonra API yanıtı beklenmeden başka bir aksiyona geçilince "yarış koşulları" (race condition) oluşur ve test bazen geçer bazen geçmez; Playwright'ın built-in actionability kontrolleri bu belirsizliği ortadan kaldırır.
Tüm Aksiyonlar — 3 Dil Karşılaştırması
Detaylı Kod Örnekleri
Micro Lab: Playwright — Locator secimi
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
fill() Tek Satırda Aslında Kaç Adım Yapar?
page.locator('#email') elementi bulur…
page.locator('#email') elementi bulur ama henüz dokunmaz — Playwright locator'ı "lazy" tutar, gerçek arama fill() çağrılana kadar ertelenir.
fill() önce actionability kontrolü yapar…
fill() önce actionability kontrolü yapar: element DOM'da mı, görünür mü, disabled değil mi, animasyon bitmiş mi — bunlardan biri eksikse Playwright BEKLER, hemen hata FIRLATMAZ.
Mevcut input değeri TAMAMEN temizlenir…
Mevcut input değeri TAMAMEN temizlenir — Selenium'daki sendKeys() bunu yapmaz, önceki değerin sonuna ekler; bu yüzden Selenium'da her zaman önce .clear() çağırman gerekiyordu.
Yeni metin tek seferde input'a yazılır…
Yeni metin tek seferde input'a yazılır ve gerçek bir "input" DOM event'i tetiklenir — React/Vue gibi framework'lerin state'i bu event sayesinde güncellenir, sadece value attribute'ini değiştirmek yetmez.