Ana içeriğe geç

Mobile Inspector

Mobile Inspector, TestFly ve mobilecli için yapılmış, Appium Inspector benzeri bir araçtır. IDE'nizin içinde, aynı arayüzle bir VS Code eklentisi ve bir IntelliJ IDEA plugin'i olarak çalışır ve page object yazmanıza yardım eder:

  • cihaz ekranı; imlecin altındaki öğe çerçevelenir;
  • mobilecli'nin @eN ref'leriyle UI ağacı ve mobilecli'nin metin anlık görüntüsü;
  • seçili öğenin tüm öznitelikleri;
  • o anki ekrandaki eşleşme sayılarıyla sıralanmış, @MobileFind alanı olarak yapıştırmaya hazır TestFly seçicileri;
  • cihazda dokunma, yazma, kaydırma ve donanım butonları;
  • Record modu: cihazı kullanın, attığınız adımlarla bir page object alın.

Mobile Inspector

Kurulum​

İki paket de depoda; marketplace erişimi gerekmez.

VS Code (1.85 veya üstü):

code --install-extension tools/vscode-mobile-inspector/dist/testfly-mobile-inspector-0.2.0.vsix

veya Extensions görünümü → … → Install from VSIX….

IntelliJ IDEA (2024.1 veya üstü, Community veya Ultimate ve diğer IntelliJ tabanlı IDE'ler): Settings → Plugins → ⚙ → Install Plugin from Disk… → tools/intellij-mobile-inspector/dist/testfly-mobile-inspector-0.2.0.zip, sonra IDE'yi yeniden başlatın. Önce eski sürümü kaldırın.

İkisi de mobilecli 1.0.20 veya üstü ile açık bir simülatör, emülatör ya da bağlı bir cihaz ister. iOS'ta mobilecli agent'ını cihaz başına bir kez kurun (mobilecli agent install --device <udid>). http://localhost:12000 cevap vermezse inspector mobilecli server start'ı kendisi çalıştırır.

Açmak​

  • VS Code: soldaki etkinlik çubuğunda TestFly Mobile simgesi → Open Mobile Inspector, veya komut paleti → TestFly: Open Mobile Inspector.
  • IntelliJ: soldaki TestFly Mobile araç penceresi → Open Mobile Inspector, veya Tools → TestFly: Open Mobile Inspector. Inspector bir editör sekmesi olarak açılır.

Tek bir çevrimiçi cihaz varsa hemen seçilip okunur; yoksa cihaz seçiciden seçin.

Pencere​

AlanNe gösterir
Araç çubuğuplatform rozetiyle cihaz seçici, Refresh, tıklama modu (Inspect / Tap / Record), cihaz kontrolleri, durum ve son okuma süresi
Screenekran görüntüsü; üzerine gelmek bir öğeyi çerçeveler, tıklamak seçer (Inspect) veya dokunur (Tap, Record). Bounds tüm öğeleri çerçeveler
UI Treetürler, metinler ve @eN ref'leriyle öğe ağacı; metin, id, tür veya ref ile filtreleme; ok tuşlarıyla gezinme ve açma
Snapshotmobilecli'nin ekran metin anlık görüntüsü (mobilecli snapshot), Copy ile
RecordedRecord modunun kodu (aşağıda)
Elementseçili öğe: eylemler, TestFly seçicileri, page object alanı, öznitelikler ve durum

Paneller kenarlarından sürüklenerek boyutlandırılır; boyutlar, mod ve açık ağaç düğümleri hatırlanır.

Seçici bulmak​

Ekranda veya ağaçta bir öğe seçin. Element paneli TestFly'ın onun için kullanabileceği tüm seçicileri en iyiden başlayarak listeler:

  1. test id (resource-id / accessibility identifier), tam ve kısa hali;
  2. adıyla rol (role=button;name=Giriş);
  3. label, placeholder, metin;
  4. id veya metinle XPath, son çare olarak konumla.

Her seçici o anki ekranda kaç öğeyle eşleştiğini gösterir: ✓ unique, N matches veya no match. XPath sayıları TestFly'ın değerlendirdiği ağacın aynısını kullanır; framework ile tutarlıdır. En iyi tekil seçici vurgulanır ve hazır bir alan olarak gösterilir:

@MobileFind(android = "com.demo:id/btnLogin")
private MobileLocator btnLogin;

Bir seçiciyi, alanı veya herhangi bir öznitelik değerini (üzerine tıklayarak) kopyalayın. Alan adları id'den veya label'dan gelir (Giriş Yap → girisYap). Inspector'ı her platform için bir kez çalıştırıp ios ve android seçicilerini tek bir @MobileFind'da birleştirin.

Cihazda işlem yapmak​

  • Element paneli: Tap ve Long press öğenin ortasına; Type öğeye dokunur ve yanındaki alandaki metni yazar (Enter da yazar); Copy CLI tap karşılık gelen mobilecli io tap komutunu kopyalar.
  • Tap modu (T): ekrana tıklamak cihazda o noktaya dokunur.
  • Araç çubuğu: Back (Android), Home ve ekranın ortasından yukarı, aşağı, sola, sağa kaydırma. Yukarı kaydırma listeyi aşağı kaydırır; sola kaydırma carousel'i ileri götürür.

Her eylemden sonra ekran yeniden okunur (aşağıdaki ayar). Bir cihazın ilk okuması en uzun sürer; sonraki okumalar ağacı ve sıkıştırılmış ekran görüntüsünü paralel alır ve görüntüyü gelir gelmez gösterir.

Record modu (kod üretimi)​

Record'a geçin (E; ekran kırmızı çerçeve alır). Artık yaptığınız her şey cihazda çalışır ve bir adım olur:

YaptığınızKaydedilen
ekranda bir öğeye tıklamakalan.tap();
Element panelinde Long pressalan.longPress();
Element panelinde Typealan.fill("metin");
öğe olmayan bir noktaya tıklamakscreen().tap(x, y);
bir kaydırma butonuscreen().swipe(SwipeDirection.UP);
Back / Homedevice().pressButton("BACK");

Recorded sekmesi (rozeti adım sayısını gösterir) her öğe için en iyi tekil seçiciyle bir @MobileFind alanı olan bir page object ve sırasıyla adımları gösterir:

Record modu

public class RecordedPage extends MobilePage {

@MobileFind(android = "com.demo:id/etUserName")
private MobileLocator etUserName;

@MobileFind(android = "com.demo:id/btnSubmit")
private MobileLocator btnSubmit;

public void recordedFlow() {
etUserName.fill("12345");
btnSubmit.tap();
screen().swipe(SwipeDirection.UP);
}
}

Copy panoya kopyalar, Clear baştan başlatır. İlk taslak olarak görün: sınıfı ve alanları yeniden adlandırın, recordedFlow()'u sonraki sayfayı döndüren niyet metotlarına bölün, ekranı belirleyen alana @WaitFor ekleyin, doğrulamalar ve diğer platformun seçicilerini ekleyin. Yazılan metin yazdığınız gibi kaydedilir; kimlik bilgilerini ortam değişkenleriyle değiştirin.

Tuşlar​

TuşEylem
Rekranı yenile
I, T, EInspect, Tap, Record modu
/ağacı filtrele
↑ ↓ ← →ağaçta gezin, kapat / aç
Escseçimi kaldır

Ayarlar​

VS Code (settings.json)IntelliJ (Settings → Tools → TestFly Mobile Inspector)VarsayılanAnlamı
testflyInspector.serverUrlmobilecli sunucu URL'sihttp://localhost:12000mobilecli sunucusu (JSON-RPC /rpc)
testflyInspector.mobilecliPathmobilecli yolumobileclisunucuyu başlatan dosya; IDE'nin PATH'inde yoksa tam yolu girin
testflyInspector.autoStartServersunucuyu otomatik başlattruecevap veren yoksa yerel bir sunucu başlatır (uzak URL'ler için asla)
testflyInspector.autoRefreshAfterActioneylemlerden sonra yeniletruedokunma, yazma, kaydırma ve butonlardan sonra ekranı yeniden okur

Inspector'ın başlattığı sunucu inspector kapanınca durdurulur; zaten çalışan bir sunucuya dokunulmaz.

Sorun giderme​

BelirtiÇözüm
"mobilecli server … is not reachable"mobilecli kurulu değil veya IDE'nin PATH'inde yok: mobilecli yolu ayarını girin ya da mobilecli server start'ı kendiniz çalıştırın
Cihaz seçicide cihaz yokbir simülatör/emülatör açın (mobilecli devices onu online göstermeli), sonra seçicinin yanındaki yenile butonu
iOS: her okuma agent'ı anarak hata veriyormobilecli agent install --device <udid>
IntelliJ: "needs JCEF"IDE gömülü tarayıcısı olmayan bir runtime ile çalışıyor; JCEF içeren bir JetBrains Runtime'a geçin (Help → Find Action → Choose Boot Java Runtime)
Eklenti etkinlik çubuğunda yokkurduktan sonra pencereyi yeniden yükleyin (VS Code) veya IDE'yi yeniden başlatın (IntelliJ)