yoklateknik mülakat

QA / Test Otomasyonu Ta Locators Selectors Strategy Mülakat Soruları

75 doğrulanmış QA / Test Otomasyonu Ta Locators Selectors Strategy mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Ta Locators Selectors StrategyZorluk 1
Otomatik UI testlerinde eleman bulmak için neden genellikle CSS class'larına güvenmek yerine özel bir data-testid niteliği tercih edilir?
  • aCSS class'ları genellikle stil ile ilişkilidir ve tasarım değiştiğinde değişir; data-testid ise sadece test için var olduğundan görsel refactor'larda sabit kalır
  • bTarayıcılar DOM motoru seviyesinde data-testid aramalarını başka her nitelik aramasından daha hızlı yapar
  • cSelenium, Cypress veya Playwright CSS class'ı ile eleman seçemez, çünkü class nitelik seçicileri üç aracın seçici motorundan da kaldırılmıştır
  • dHTML5 her etkileşimli eleman için bir data-testid niteliği zorunlu kılar
Açıklama:Doğru cevap a: data-testid, salt test kancası olarak var olan bir konvansiyondur, bu yüzden bir tasarımcı stylesheet'i yeniden düzenlediğinde yeniden adlandırılmaz veya silinmez — stile bağlı CSS class'larının başına gelen tam olarak budur. b yanlış, motor seviyesinde anlamlı bir hız farkı yoktur. c yanlış, her üç araç da class ile seçim yapabilir ve hiçbiri bu yeteneği kaldırmamıştır. d yanlış, HTML5'te böyle bir zorunluluk yoktur.
Ta Locators Selectors StrategyZorluk 1
//div[3]/span[2]/a gibi bir locator'ı sabit bir niteliğe dayanan bir locator'a kıyasla neden kırılgan yapar?
  • aXPath ifadeleri modern tarayıcılarda kullanımdan kaldırılmıştır ve tarayıcı üreticisinden hiçbir önceden uyarı olmadan her an çalışmayı durdurabilir
  • bElemanların DOM'daki tam yapısal konumuna bağlıdır, bu yüzden bir markup yeniden sıralaması veya eklenen bir wrapper div onu bozar
  • cSadece Playwright'ta kullanılabilir, Selenium'da kullanılamaz
  • dKonumsal XPath, DOM boyutundan bağımsız olarak her zaman herhangi bir CSS seçiciden daha yavaş çalışır
Açıklama:Doğru cevap b: konumsal XPath tam ağaç yapısını kodlar, bu yüzden bir tasarımcı bir wrapper eleman eklediğinde veya kardeşleri yeniden sıraladığında, hedef eleman hiç değişmemiş olsa bile locator sessizce bozulur. a yanlış, XPath kullanımdan kaldırılmadı ve hiçbir tarayıcı üreticisi böyle bir kaldırma duyurmadı. c yanlış, Selenium By.xpath ile XPath'i yerel olarak destekler. d performans hakkında aşırı genelleme yapıyor, asıl kırılganlık sorunu bu değil.
Ta Locators Selectors StrategyZorluk 1
Selenium'da (Java binding), bir elemanı CSS seçicisiyle bulmak için hangi satır doğrudur?
  • adriver.findElement(By.selector(".submit-btn", SelectorType.AUTO));
  • bdriver.querySelector(".submit-btn");
  • cdriver.findElement(By.cssSelector(".submit-btn"));
  • ddriver.findElement(CssSelector(".submit-btn"));
Açıklama:Doğru cevap c: Selenium'un By sınıfı, CSS tabanlı locator'lar için By.cssSelector(String) fabrika metodunu sunar ve driver.findElement(By.cssSelector(...)) şeklinde kullanılır. a var olmayan bir By.selector metodu ve CSS ile XPath'i otomatik ayırt ettiği iddia edilen uydurma bir SelectorType.AUTO enum'u uyduruyor; Selenium'un By API'sinde böyle bir kavram yoktur. b WebDriver üzerinde doğrudan olmayan bir querySelector metodu uyduruyor, Selenium API'sinde bu yoktur. d gerekli By. ön ekini atlıyor, bu yüzden derlenmez.
Ta Locators Selectors StrategyZorluk 1
Cypress'te, yaygın data-cy konvansiyonunu izleyerek sadece test otomasyonu için ayrılmış bir elemanı seçmenin geleneksel yolu nedir?
  • acy.get('[data-cy=submit-button]')
  • bcy.select('data-cy', 'submit-button')
  • ccy.locate('data-cy=submit-button')
  • dcy.find('#data-cy-submit-button')
Açıklama:Doğru cevap a: Cypress'in özel bir data-attribute API'si yoktur, bu yüzden topluluk konvansiyonu, genel cy.get()'i bir nitelik-seçici string'iyle kullanmaktır: cy.get('[data-cy=submit-button]'). b bu imzayla var olmayan bir cy.select komutu uyduruyor (Cypress'in gerçek .select() komutu <select> dropdown seçenekleri içindir, nitelik arama için değil). c var olmayan bir cy.locate komutu uyduruyor. d aslında bir nitelik olan şey için id seçici sözdizimini yanlış kullanıyor.
Ta Locators Selectors StrategyZorluk 1
Playwright'ın getByRole('button', { name: 'Submit' }) gibi rol tabanlı locator'larının arkasındaki temel motivasyon nedir?
  • aDOM'u tamamen atlayıp tarayıcının render motorunu doğrudan sorguladıkları için CSS seçicilerinden daha hızlı çalışırlar
  • bShadow DOM elemanlarıyla çalışan tek locator türüdür
  • cElemanın arkasındaki başarısız network isteklerini otomatik olarak yeniden dener
  • dTarayıcının erişilebilirlik ağacını rol ve erişilebilir isme göre sorgular, böylece test elemanın yardımcı teknolojilere nasıl sunulduğunu yansıtır ve implementasyon markup'ı değişse bile kararlı kalır
Açıklama:Doğru cevap d: rol tabanlı locator'lar tarayıcının erişilebilirlik ağacını rol ve erişilebilir isme göre sorgular, yani test rastlantısal markup yerine kullanıcıya görünen anlamı hedefler ve iki kaygı (test kararlılığı, erişilebilirlik kapsamı) birlikte ele alınır. a yanlış, yine de render iç yapısını dolaşırlar, bir hız kısayolu değildir. b yanlış, Playwright'ın normal locator'ları zaten açık Shadow DOM'u delip geçebilir. c rol tabanlı locator'ların yaptığı şeyle ilgisizdir.
Ta Locators Selectors StrategyZorluk 2
Bir sayfada hepsi btn btn-primary class'ını paylaşan birkaç buton var ve sadece görünen metinleri farklı ("Kaydet", "İptal", "Sil"). Yeni markup eklemeden belirsizliği en iyi hangi locator stratejisi önler?
  • aOrtak class'a göre seç ve her zaman dönen ilk eşleşmeyi al
  • bButonu görünen erişilebilir metnine göre bul, örn. Playwright'ın getByRole('button', { name: 'Kaydet' }) veya metin tabanlı bir XPath/CSS seçici
  • cSayfadaki tüm .btn elemanları arasında kardeş konumunu sayan bir XPath kullan, göreli sıralarının sürümler arasında asla değişmeyeceğini varsayarak
  • dTag adı button'ı class ile birleştirerek seç, çünkü bu sonucu tam olarak bir elemana daraltır
Açıklama:Doğru cevap b: ortak class ayrım yapmadığından ve görünen metin tek ayırt edici, kararlı sinyal olduğundan, o metne göre bulmak (doğrudan veya role+name ile) DOM sırasından bağımsız olarak doğru butonu hedefler. a kırılgandır ve anlamsal olarak yanlıştır — 'ilk eşleşme' sadece rastlantıyla işe yarar. c konumsal kırılganlığı yeniden getirir ve ayrıca sessizce bozulabilecek belirtilmemiş bir sıralama varsayımını da içine gömer. d yanlıştır çünkü tag+class hâlâ üç butonun hepsiyle eşleşir, tek elemana daraltmaz.

1050 soruluk QA / Test Otomasyonu bankasında kendini sına.

Mülakata başla