2015-07-13 7 views
9

Güncelleme
Referanslar: Ben iOS ve Android'i hem desteklemelidir bir bulut tabanlı mobil test çözümü üzerinde çalışıyorum perfecto mobile ve device anywhereMobil ekranı tarayıcıdan nasıl kontrol edebilirim?


. Tarayıcıdan işlenecek bağlı mobil cihazlar gerektirir.

Bir mobil cihaz olaylarını

  • tarayıcısı
  • mobil ekran akışları hangi yüklenmiş ve enjekte (köklü edilecek cihaz gerektirir) programının bir ajan tür olduğunu öğrendik

    Bunu gerçekleştirmede köklenme/hapis cezası olmadan başka bir yaklaşım var mı?

    Bu soru çok geniş görünebilir, ancak doğru yönde ilerlemek için çabalamaya çalışıyorum.

    iOS için this SOF question'dan ipucu alıyorum.

    Herhangi bir işaretçi takdir edilir. Güncelleme 1


    :
    This question Ben ne arıyorum yakındır.

    Güncelleme 2: Ben Android cihazlar için Android Screen Library bulduk ve cihazların çift üzerinde test ettik. Aygıtın köklenmesini gerektirmez, ancak her aygıtın yeniden başlatılmasında Komut Satırından yeniden başlatılmasını gerektirir ve yeniden başlatır ve Lollipop üzerinde çalışamaz..

    Güncelleme 3: Android Screen Library iken köklendirme olmadan yakalama ekranı yardımcı olur ama olayları enjekte içinde yardımcı olmuyor. Ekran yakalama bile buggy görünüyor - bazen siyah yama ile yakalar ve Lollipop üzerinde çalışmıyor!

    Güncelleme 4: Referanslar: perfecto mobile ve device anywhere Onlar adb shell input tap x y yoluyla olayları gönderme/Uygulama yükleme gibi birçok şeyi işlemek için kaldırma ADB kullanıyor görünüyor. Birileri biraz ışık tutabilir mi?

    Güncelleme 5: Ben Adrian Taylor, eski RealVNC mühendisinden this SO Post rastlamak var. Bu en detaylı açıklamadır. Android Lollipop'un MediaProjection API'leri olmasına rağmen, ekran görüntülerini sdcard'da MP4 dosyaları olarak saklar gibi görünüyor. Ayrıca, google dashboard - Ağustos 2015 güncellemesine göre, Lollipop, Android kurulum tabanının yaklaşık% 15'ini oluşturuyor. Bu nedenle, herhangi bir çözüm için Kitkat'ın dikkate alınması gerekiyor.

    Güncelleme 6: Ben bu iş yapacak merak ederek libvncserver bulduk. Sonucu test edip göndereceğim.

    Teşekkür

+1

Lütfen aşağıya oylama ile yorum ekleyin;) Bana yardımcı olacaktır. – iuq

+0

Aradığınız şey olup olmadığından emin değilim, ancak UI testlerini JavaScript ile otomatik hale getirebilirsiniz. [Eğitici] (http://code.tutsplus.com/tutorials/introduction-to-ios-testing-with-ui-automation--cms-22730), [Dokümantasyon] (https://developer.apple.com/ library/mac/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingAutomationInstrument/Using theAutomationInstrument.html) –

+0

@Islam Q - teşekkürler, bu gerçekten iyi bir makaledir. Ama benim sorum, bağlantı ile ilgili daha az farklıdır ve çözüm çoğunlukla manuel test için kullanılacaktır. – iuq

cevap

4

kullanın WebKit'i, bu Apple ile onay sürecinden geçmesi muhtemel geçmesi daha alabilirsiniz olduğunca yakın ve hala DAHA hemen hemen alırsınız

İşte basit bir örnek, bu temelde bir seçici yapar Web sayfasında, uygulamadaki dize değerini gönderir, bu değeri işlemden geçirir ve sonucu geri gönderir ve ardından web sayfasının başlığı olarak gönderirsiniz. Ekranın

[controller addScriptMessageHandler:self name:@"observe"]; 
configuration.userContentController = controller; 
NSURL *jsbin = [NSURL URLWithString:k_JSBIN_URL]; 

_webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]; 
[_webView loadRequest:[NSURLRequest requestWithURL:jsbin]]; 
[self.view addSubview:_webView]; 

sap webView üzerinde

// yapılandırmak webView ve yer Web görünümündeki:

uygulama ucunda
var headline = $("#headline"); 
var selection = $("#selector"); 

function set_headline (text) { 
    headline.text(text); 
} 

function call_native() { 
    var prop = selection.val(); 
    set_headline("asked for " + prop + "..."); 
    window.webkit.messageHandlers.observe.postMessage(prop); 
} 

setTimeout(call_native, 1000); 
selection.on("change", call_native); 

, aşağıdaki kurmak: Burada

<h2 id="headline">loading...</h2> 
<select id="selector"> 
    <option value="systemVersion" selected>iOS Version</option> 
    <option value="systemName">System Name</option> 
    <option value="name">Device Name</option> 
    <option value="model">Device Model</option> 
    <option value="userInterfaceIdiom">User Interface</option> 
    <option value="identifierForVendor">Vendor ID</option> 
</select> 

javascript var olaylar:

-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message 
{ 
// Check to make sure the name is correct 
    if ([message.name isEqualToString:@"observe"]) { 
     // Log the message received 
     NSLog(@"Received event %@", message.body); 

     // Then pull something from the device using the message body 
     NSString *version = [[UIDevice currentDevice] valueForKey:message.body]; 

     // Execute some JavaScript using the result 
     NSString *exec_template = @"set_headline(\"received: %@\");"; 
     NSString *exec = [NSString stringWithFormat:exec_template, version]; 
     [_webView evaluateJavaScript:exec completionHandler:nil]; 
    } 
} 
+0

Yanıtınız için teşekkür ederiz. Yalnızca web/karma uygulamalar için mi yoksa yerel uygulamalar için mi çalışacak? ... Üzgünüm iOS'ta bir şey test etmedim, hala Android çözümünü denemeye çalışıyordum. – iuq

+0

bu saf yerli, bu hibrit için değil, hepsi bu durumda ObjC için, bu yüzden bu kadar güçlü – Loxx