Libimobiledevice nedir, nasıl kullanılır?
Appium ile IOS Mobil test otomasyonda kullandığımız teknolojilerden biri olan Libimobiledevice kütüphanesinden bahsetmek istiyorum. Mobil test otomasyon geliştirenler çok iyi bilir IOS, android kadar esnek değildir. Android’e nazaran çok daha kapalı kutudur. Android tarafında adb (Android Debug Bridge) emulator/real device üzerinde birçok işlem yapmamıza imkan sağlar. (cihaz udid (device id) alma, screenshot alma vb). Peki IOS de bu işler nasıl oluyor sorusunun cevabını bu yazıda sizlere anlatmaya çalışacağım.
IOS’de, birçok işlemde jailbreak gerekir iken, bu kütüphanede gerekmiyor oluşu, kütüphaneyi sevmek için sadece bir neden :)
Gelelim Libimobiledevice’ın özelliklerine. Nedir bu libimobiledevice ve hangi alanlarda kullanabilirim?
İlk önce kurulumdan çok kısa bahsedeyim. Çok basit ve hızlı bir kurulumu var.
* ruby -e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )"* brew install — HEAD libimobiledevice -g
sadece bu iki komutu çalıştırarak libimobiledevice’ı kurmuş oluyorsunuz.
* Bağlı cihazları listeleme
- idevice_id
Appium ile bir IOS testi yazmak/koşmak istediğinizde, appium bizden cihazın uid bilgisini ister bu noktada libimobiledevice bize; terminalini aç “idevice_id -l” komutunu yapıştır, ben bilgisayarına kabloyla bağlı olan bütün cihazların did bilgisini sana vereyim diyor.
* Cihazın ekran görüntüsünü alma
- idevicescreenshot
* Cihazla ilgili detaylı bilgileri alma
- ideviceinfo
Bu özellik sayesinde işimize yarar/yaramaz birçok bilgiyi libimobiledevice bize getiriyor. Cihaz isminden tutun cihazın seri numarası, imei numarası gibi bilgileri bize sunuyor.
* Cihaz lokasyonunu ayarlama
- idevicesetlocation
Bu da oldukça güzel bir özellik bence, mobil otomasyonda bazen cihazımın konumumu değiştirmem gereken durumlar olabiliyor. Bu durumda bu komut hayat kurtarıcı olabiliyor.
* Cihazı restart etme veya kapatma
- idevicediagnostics restart/shutdown
* Cihaz loglarını alma
- idevicesyslog
Bu komut bize oldukça fazla log bastığı için biz burada sadece işimize yarayacak logu grep edebiliriz. Örnek olarak ben sadece uygulamam crash olduğu zamanki log ları okumak istiyorum diyebilirsiniz. Aşağıdaki örnekte WebDriverAgentRunner uygulamasının crash logları gözükmektedir.
idevicesyslog -p ‘WebDriverAgentRunner|ReportCrash’
* Cihaz yedeğini alma
- idevicebackup2
Ben sadece en çok kullanmak isteyeceğimiz özelliklerden bahsettim fakat birçok özelliği daha mevcut kütüphanenin. Diğer özelliklerini öğrenmek isterseniz de Buradan github reposunu görebilirsiniz.
sahibinden.com QA ekibi olarak, libimobiledevice’ı test otomasyon dışında Node JS ile geliştirdiğimiz sahibinden.com QA Platform projemizde, ofiste bulunan device farm daki mobil cihazlarımızın ekranlarını takip etmek amacıyla kullanıyoruz.
* ideviceinstaller
Birde libimobiledevice’ın alt paketi olan ideviceinstaller’dan birazcık bahsedeyim. Bu kütüphanede IOS uygulamarını yönetmemize imkan sağlar.
Yine çok basit bir kurulumu var;
- brew install ideviceinstaller -g
- ideviceinstaller --list-apps
İlk komut bize cihazımızda yüklü olan uygulamaları listeliyor.
- ideviceinstaller - <dosya> yükleyin
Bu komutu ise cihazımıza, localimizde bulunan ipa (IOS app) file’ı cihazımıza yüklemek için kulanıyoruz.
- ideviceinstaller --uninstall <appid>
Bu komutu da cihazda bulunan herhangi bir uygulamayı silmek için kullanıyoruz.
Böylelikle libimobiledevice özelliklerinin birkaçını öğrenmiş olduk. Bu tarz araçlar için takipte kalmayı unutmayın. :)