Selenium Mülakat Soruları
Yazan: Aaron Cao · Güncellendi

Selenium mülakatları wait, locator, Page Object Model ve testlerin neden flaky hale geldiği üzerine odaklanır. Implicit ile explicit wait arasındaki farkı açıklamanız, XPath yerine CSS'i seçip bunu savunmanız, bir stale element hatasını çözmeniz ve framework'ünüzün paralel nasıl çalıştığını anlatmanız beklenir.
Mülakatlarda wait ve locator hakkında neler sorulur?
Yerelde geçen ama pipeline'da başarısız olan testler yazdınız ve cevabın wait ile ilgili olduğunu düşünüyorsunuz ama bunu net biçimde ifade edemiyorsunuz. Mülakatçılar bunu bilir, bu yüzden wait konusu çoğu Selenium turunu açar. Bu bölüm eksiksiz bir cevabın nasıl olduğunu ele alır.
- Implicit ile explicit wait. Implicit wait, her aramada elemanın varlığını yoklayan global bir ayardır. Explicit wait ise tek bir elemanı ve tıklanabilir ya da görünür gibi tek bir koşulu hedefler. Explicit tercih edilir çünkü neyin beklendiğini açıkça belirtir.
- Neden ikisi karıştırılmamalı? İkisini birleştirmek, tahmin edilmesi zor biçimde timeout'ları birbirine katabilir; bu yüzden çoğu ekip implicit wait'i sıfıra çeker ve baştan sona explicit wait kullanır.
- Fluent wait nedir? Yapılandırılabilir bir polling aralığına ve göz ardı edilen exception türlerine sahip bir explicit wait.
Thread.sleepneden yanlıştır? Koşulsuzdur. Geçen bir testi yavaşlatır ve yine de yavaş bir testi başarısız kılar.- CSS selector mi, XPath mi? Önce kararlı bir test identifier attribute'u, sonra okunabilirlik için CSS tercih edin. XPath, bir parent'a kadar gitmeniz ya da metne göre eşleştirmeniz gerektiğinde yerini bulur.
- Bir locator'ı kırılgan yapan nedir? Otomatik üretilmiş class adları, mutlak XPath ve index tabanlı seçim. Bunun yerine geliştiriciden ne eklemesini isteyeceğinizi söyleyin.
Mülakatçılar her tercihin arkasındaki gerekçeyi dinler. Maliyetini belirtmeden bir tercih söylemek ezberlenmiş bir cevap gibi görünür.
Exception ve kararsızlık (flakiness) sorularını nasıl yanıtlarsınız?
Flaky testler, kıdemli otomasyon mülakatlarının asıl konusudur, çünkü kimsenin güvenmediği bir suite, suite olmamasından bile kötüdür.
StaleElementReferenceExceptionneden oluşur? Eleman referansı artık bağlı olmayan bir node'u işaret eder, genelde framework sayfanın o kısmını yeniden render ettiği için. Saklanan referansı yeniden kullanmak yerine elemanı yeniden bulun.- Ya
ElementNotInteractableException? Eleman vardır ama üzerinde işlem yapılamaz: gizlidir, disabled'dır, bir overlay tarafından kaplanmıştır veya ekran dışındadır. NoSuchElementExceptionnasıl ele alınır? Bir zamanlama sorununu gerçekten var olmayan bir elemandan ayırt edin ve bunu daha uzun bir sleep ile örtbas etmeyin.- Testler neden sadece pipeline'da başarısız oluyor? Farklı viewport boyutu, daha yavaş ortam, eksik test verisi, daha geç biten animasyonlar ve paylaşılan durum üzerinde çakışan paralel testler.
- Kararsız bir testi nasıl düzeltirsiniz? Önce kategoriyi teşhis edin, sonra nedeni düzeltin. Auto-retry başarısızlıkları gizler ve öyle olduğunu belirtmeniz gereken son çaredir.
- Frame'leri, yeni pencereleri ve alert'leri nasıl ele alırsınız? Bağlamı açıkça değiştirmek ve ardından geri dönmek.
Orta seviye bir otomasyon rolü için mülakata giren bir QA mühendisine, bir suite'in neden kod değişikliği olmadan haftada iki kez başarısız olduğu soruldu. İşe yarayan cevap bir Selenium API detayı değil, testlerin tek bir seeded hesabı paylaşıp birbiriyle yarışmasıydı. Mülakatçılar bu teşhis sırasını ödüllendirir: önce ortam ve veri, sonra API.
Role ve araca göre daha fazla soru bankası interview questions by role altında yer alır.
Hangi framework ve mimari soruları çıkar?
API'nin ötesinde, panel bir suite'e sahip çıkıp çıkamayacağınızı bilmek ister. Bu sorular kıdemli roller için en çok ağırlığı taşır.
- Page Object Model'i açıklayın. Page class'ları action'ları dışa açar ve locator'ları gizler, böylece bir UI değişikliği tek bir dosyaya dokunur. Hangi sorunu çözdüğünü söyleyin; sadece klasör düzenini anlatmak konunun özünü kaçırır.
- Page Object'lerde ne ters gidebilir? Binlerce satırlık class'lara dönüşürler ve page method'ları içinde assert yapmaya başlarlar. Assertion'lar testlerde olmalıdır.
- Framework'ünüz testleri paralel nasıl çalıştırır? Thread-safe driver yönetimi, böylece instance'lar thread'ler arasında paylaşılmaz, ayrıca test başına bağımsız test verisi.
- Selenium Grid ne işe yarar? Testleri makineler ve tarayıcı sürümleri arasında dağıtmak; bir hub ve node'larla ya da aynı rolü oynayan bir bulut sağlayıcıyla.
- Selenium 4'te ne değişti? W3C WebDriver protokolü standart hale geldi ve eski JSON wire protokolü kaldırıldı, relative locator'lar geldi ve Chrome DevTools Protocol erişimi açığa çıktı.
- Selenium'u ne zaman kullanmazsınız? API seviyesi kontroller, unit testle test edilebilir mantık ve tarayıcı dışındaki her şey. Bu sınırı bilmek kıdemli bir sinyaldir.
- Neyi otomatikleştireceğinize nasıl karar verirsiniz? Kararlı, yüksek değerli, tekrarlayan yollar. Her şey değil, ve hâlâ yeniden tasarlanmakta olan bir ekran değil.
Mülakattan önce nasıl pratik yapmalısınız?
Selenium cevapları bilmesi kolay ama söylemesi zor olacak şekilde tuhaftır. Özellikle wait sorusunun tanım ve gerekçe olmak üzere iki parçalı bir cevabı vardır ve sadece okumuş adaylar ilk yarıyı verip sonra sözü bağlayamaz.
Burada karşılaşmak istemeyeceğiniz beş soruyu alın ve editör açık olmadan her birini doksan saniyede sesli yanıtlayın. Sonra birine takip sorusunu sordurun, ki bu neredeyse her zaman nedenidir. Aynı promptları geri iten bir yapay zeka mülakatçıya karşı çalıştırmak, bir listeyi yeniden okumaktan gerçek bir tura daha yakındır ve mock interview modunun var oluş amacı da budur.
SubcueAI'nin kurucusu Aaron Cao, uygulamayı daha fazla soru sağlamak yerine bu konuşma açığı etrafında kurdu. Canlı bir mülakatta masaüstü uygulaması ve tarayıcı eklentisinin Side Panel'i, mülakatçı konuşurken yapıyı gösterebilir; bu en çok zaten prova ettiğiniz materyalde işe yarar. Ürünün ne yaptığı ve aşmadığı sınırlar security sayfasında anlatılır.