🚨 Yaygın Hatalar & Çözümleri

Yaygın Hatalar & Çözümleri: Appium hata mesajlarını okumak, arabanın gösterge panelindeki uyarı ışıklarını okumak gibidir: ışık arızanın KENDİSİ değil, arızanın bıraktığı izdir —

Appium hata mesajlarını okumak, arabanın gösterge panelindeki uyarı ışıklarını okumak gibidir: ışık arızanın KENDİSİ değil, arızanın bıraktığı izdir — motor lambası yanınca kaputu açarsın, ampulü değiştirmezsin. `SessionNotCreatedException` da böyledir; hata cümlesi "session kurulamadı" der ama gerçek sebep neredeyse her zaman daha aşağıdadır (yanlış `appPackage`, kapalı emülatör, uyumsuz UiAutomator2 sürümü). Peki hata mesajı sorunu bu kadar net söylüyorsa, neden çözüm için mesajın kendisine değil altındaki `Caused by` zincirine bakmak gerekir? Java'da bir stack trace'in en alt satırını okumaya alışkınsın — Appium'da fark şudur ki zincir iki makineye yayılır: hatanın yarısı senin test JVM'inde, yarısı Appium server log'unda durur. QA açısından bunun bedeli şudur: mesajın yüzeyine göre "flaky test" deyip retry ekleyen bir ekip, aslında yanlış capability yüzünden çöken bir suite'i haftalarca yeşile boyar ve gerçek regresyonu production'da görür. Her hata için: neden olur → nasıl çözülür → doğru kod nasıl yazılır.

Appium 3 güvenlik bayraklarını varsayılan olarak devre dışı bırakır. "adb_shell" gibi güvenlik gerektiren feature'lar açıkça izin verilmedikçe çalışmaz.

Element henüz DOM'da yok (async yükleme), locator yanlış, yanlış context (native vs webview), element görünür ama tıklanamaz.

Appium server çalışmıyor, yanlış port, emülatör başlatılmamış veya bağlı değil, capability hatalı (örn. appPackage yok).

Appium 2'den kalma kod Appium 3 ile çalıştırılıyor. Appium-specific capability'lere "appium:" prefix eklenmemiş.

ANDROID_HOME environment variable tanımlanmamış veya yanlış dizini gösteriyor. PATH'de adb yok.

Jenkins çoğunlukla headless sunucularda çalışır (display yok). Android emülatörü varsayılan olarak GUI gerektirir.

Hızlı Hata Tanı Tablosu

"Security feature flag is not enabled" hatasının çözümü nedir?

Appium'u yeniden kur

appium --allow-insecure=adb_shell ile server başlat

ANDROID_HOME değişkenini düzelt

Appium 3 güvenlik açısından varsayılan olarak kısıtlayıcıdır. adb_shell, chromedriver_autodownload gibi feature'lar için --allow-insecure flag'i gereklidir. wdio.conf.ts'de services altında allowInsecure array'ine eklenebilir. Üretimde sadece gerçekten gerekli olan feature'lar izin listesine eklenmeli.

Appium testlerinde 'chromedriver_autodownload' özelliğini kullanırken karşılaşılan "Security feature flag is not enabled" hatasını gidermek için hangi yöntem izlenmelidir?