Kafayı yiyecektim. Bir otomasyon script'i yazıyordum, basit bir form doldurma ve butona tıklama işlemi. Ama Playwright ile yazdığım bot, sanki kendi başına bir şeyler öğrenmiş gibi, bambaşka bir yere gitti. Meğerse sorun şuradaymış...
Otomasyonun Karanlık Tarafı
Bir test senaryosu için, bir demo e-ticaret sitesinde kullanıcı kaydı oluşturuyordum. Her şey normaldi: page.goto(), page.fill(), page.click(). Ama o ne? Kayıt olduktan sonra "Kariyer" sayfasına yönlendirilen bir pop-up çıktı. Benim kodum, tüm sayfadaki ilk "Başvur" butonunu bulup tıklamak üzereydi.
Ve böylece benim otomasyon botum, insan kaynakları sistemine başvuru yapmış, CV'sini (yani boş bir input) göndermiş ve iş görüşmesi için bir Zoom linki almış oldu. Şaka gibi ama, mail kutumda "Değerli Adayımız" diye başlayan bir mail vardı.
Debug Kabusu ve Beklenmedik Sonuç
StackOverflow'da bile bulamazsın böyle bir bug'ı. "Neden test kullanıcım iş başvurusu yapıyor?" diye saatlerce debug ettim. Meğerse hedef sitedeki CSS selektörlerim çok geniş kapsamlıymış ve DOM'daki herhangi bir "Başvur" butonunu, hangi sayfada olursa olsun yakalıyormuş. Otomasyon, ben farkında olmadan, kullanıcı akışının dışına çıkıp bambaşka bir işlemi tetiklemişti.
Sonuç olarak, daha spesifik ve güvenli XPath'lere geçtim ve her önemli etkileşimden önce page.url() ile doğru sayfada olup olmadığımı kontrol etmeye başladım.
Öğrenilen Acı Ders
Otomasyon yazarken, sadece "ne yapmasını istediğinizi" değil, "neler yapabileceğini" de düşünmek zorundasınız. Bir bot, verdiğiniz talimatları harfiyen yerine getirir, mantık yürütmez. Benimkisi de öyle yaptı ve kendi kendine kariyer yapmaya kalktı!
Siz de böyle beklenmedik, komik/şaşırtıcı otomasyon faciaları yaşadınız mı? Playwright veya Selenium'da buna benzer tuzaklardan nasıl kaçınıyorsunuz?
Bir test senaryosu için, bir demo e-ticaret sitesinde kullanıcı kaydı oluşturuyordum. Her şey normaldi: page.goto(), page.fill(), page.click(). Ama o ne? Kayıt olduktan sonra "Kariyer" sayfasına yönlendirilen bir pop-up çıktı. Benim kodum, tüm sayfadaki ilk "Başvur" butonunu bulup tıklamak üzereydi.
JavaScript:
// Bu satır işleri mahvetti...
await page.click('a:has-text("Başvur")');
Ve böylece benim otomasyon botum, insan kaynakları sistemine başvuru yapmış, CV'sini (yani boş bir input) göndermiş ve iş görüşmesi için bir Zoom linki almış oldu. Şaka gibi ama, mail kutumda "Değerli Adayımız" diye başlayan bir mail vardı.
StackOverflow'da bile bulamazsın böyle bir bug'ı. "Neden test kullanıcım iş başvurusu yapıyor?" diye saatlerce debug ettim. Meğerse hedef sitedeki CSS selektörlerim çok geniş kapsamlıymış ve DOM'daki herhangi bir "Başvur" butonunu, hangi sayfada olursa olsun yakalıyormuş. Otomasyon, ben farkında olmadan, kullanıcı akışının dışına çıkıp bambaşka bir işlemi tetiklemişti.
Sonuç olarak, daha spesifik ve güvenli XPath'lere geçtim ve her önemli etkileşimden önce page.url() ile doğru sayfada olup olmadığımı kontrol etmeye başladım.
Otomasyon yazarken, sadece "ne yapmasını istediğinizi" değil, "neler yapabileceğini" de düşünmek zorundasınız. Bir bot, verdiğiniz talimatları harfiyen yerine getirir, mantık yürütmez. Benimkisi de öyle yaptı ve kendi kendine kariyer yapmaya kalktı!
Siz de böyle beklenmedik, komik/şaşırtıcı otomasyon faciaları yaşadınız mı? Playwright veya Selenium'da buna benzer tuzaklardan nasıl kaçınıyorsunuz?