Örnek sorular
Ta Selenium Cypress Playwright TradeoffsZorluk 1
Bir Selenium WebDriver client kütüphanesi (ör. Java veya Python binding'i) tarayıcıya bir elemente tıklamasını nasıl söyler?
- aSayfanın kendi script bağlamına doğrudan bir JavaScript click() çağrısı enjekte eder
- bKomutu tarayıcının poll ettiği paylaşımlı bir bellek bölgesine yazar
- cBir HTTP isteğini bir driver sürecine gönderir, o süreç de işlemi tarayıcıda gerçekleştirir✓
- dTarayıcıyla birlikte kurulmuş, derlenmiş yerel bir plugin üzerinden doğrudan tarayıcının render motoruna bağlanır
Açıklama:Selenium, WebDriver protokolünü izler: client kütüphane HTTP isteğini (JSON gövdeli) chromedriver veya geckodriver gibi bir driver çalıştırılabilirine gönderir, o driver süreci isteği gerçek tarayıcı işlemine çevirir. a, Cypress'in komutları tarayıcı içinde çalıştırma biçimine daha yakın; b ve d üç aracın da iletişim şekli değil.
Ta Selenium Cypress Playwright TradeoffsZorluk 1
Bir test çalışırken Cypress'in test kodu gerçekte nerede çalışır?
- aTest edilen uygulamayla aynı tarayıcıda ve run loop'ta✓
- bHerhangi bir tarayıcıdan ayrı, uzak bir grid node'unda
- cTarayıcının dışında, işletim sisteminin erişilebilirlik katmanında
- dUygulamanın kendi backend sunucu sürecinin içinde, tarayıcıdan tamamen izole
Açıklama:Cypress test kodu, uygulamanızın JavaScript'iyle aynı run loop'u paylaşarak doğrudan tarayıcıda çalışır; bir Node.js süreci dosya okuma gibi OS erişimi gerektiren işleri yapar ve network trafiğini proxy'ler. b, c ve d Cypress test kodunun çalıştığı yeri tarif etmiyor.
Ta Selenium Cypress Playwright TradeoffsZorluk 1
Playwright, Chromium tabanlı tarayıcıları kontrol etmek için öncelikle hangi protokolü kullanır?
- aKlasik Selenium JSON Wire Protocol
- bPiksel karşılaştırmasına dayalı genel bir ekran-tarama protokolü
- cBir soket üzerinden IMAP tarzı polling
- dChrome DevTools Protocol (CDP)✓
Açıklama:Playwright, Chromium tarayıcılarını, orijinal olarak tarayıcı debug araçları için geliştirilmiş WebSocket tabanlı Chrome DevTools Protocol (CDP) üzerinden yönetir. a, Selenium'un daha eski protokol soyu; b ve c burada kullanılan gerçek otomasyon protokolleri değil.
Ta Selenium Cypress Playwright TradeoffsZorluk 1
Üç araçtan hangisi, yüklü tarayıcı sürümüyle eşleşmesi gereken, tarayıcı-üreticisine-özgü ayrı bir driver çalıştırılabilirine (chromedriver veya geckodriver gibi) ihtiyaç duyar?
- aCypress
- bSelenium✓
- cPlaywright, desteklediği her tarayıcı için
- dHiçbiri herhangi bir driver'a ihtiyaç duymaz
Açıklama:Selenium'un WebDriver mimarisi, tarayıcı üreticisi başına bir driver çalıştırılabilirine bağımlıdır ve o driver'ın sürümü genelde yüklü tarayıcı sürümüyle eşleşmelidir. Cypress ayrı bir üretici driver'ı olmadan kendi binary'sini paketler, Playwright ise dışarıdan driver çalıştırılabilirini kurup sürüm eşlemesi yapmanızı istemek yerine kendi tarayıcı binary'lerini kendisi yönetir.
Ta Selenium Cypress Playwright TradeoffsZorluk 2
Selenium neden macOS'ta gerçek Apple Safari'yi otomatikleştirmek için kullanılabilirken Cypress hiç Safari test edemez?
- aCypress, Safari'nin render hızına yetişemeyecek kadar yavaştır
- bSelenium, Safari'yi Apple'ın kendi safaridriver'ı üzerinden sürebilir; Cypress'in ise Safari ailesi bir motor entegrasyonu yoktur✓
- cSafari, HTTP tabanlı tüm otomasyon protokollerini politika gereği engeller
- dCypress, Safari'nin macOS motoruna hiç taşınmamış, Windows'a özgü bir kernel düzeyi driver bileşeni gerektirir
Açıklama:Selenium'un WebDriver mimarisi herhangi bir üreticinin uyumlu bir driver yayınlamasına izin verir ve Apple tam olarak bu amaçla safaridriver sağlar, bu yüzden Selenium macOS'ta gerçek Safari'yi otomatikleştirebilir. Cypress hiçbir zaman bir Safari/WebKit çalıştırma yolu entegre etmedi, dolayısıyla Safari'ye karşı test çalıştıramaz. a, c ve d bu araçların gerçekte çalışma biçimiyle uyuşmayan gerekçeler.
Ta Selenium Cypress Playwright TradeoffsZorluk 2
Cypress, geçmişte aynı test içinde ikinci, farklı bir origin (domain) ile etkileşimde neden kısıtlıydı?
- aCypress, HTTPS olmayan hiçbir network isteğini göndermeyi reddeder
- bCypress test dosyaları test başına tam olarak bir HTTP isteğiyle sınırlıdır
- cİkinci origin sayfaları her zaman, Cypress'in inspector'ının hiç görünürlüğü olmadığı özel bir headless sandbox modunda render olur
- dCypress kodu, uygulamanın origin'ine bağlı tarayıcı içinde çalışır, origin değişimi bağlamı bozardı✓
Açıklama:Cypress kodu uygulamayla aynı bağlamda doğrudan tarayıcı içinde çalıştığı için, gerçekten farklı bir origin'e gitmek bu çalışma bağlamını bozardı; bu yüzden Cypress daha sonra bir çözüm olarak cy.origin()'i tanıttı. a, b ve c Cypress'in hiç sahip olmadığı gerçek kısıtlamalar.