2015-07-13 3 views
9

Update
Ссылки: perfecto mobile и device anywhereКак управлять мобильным экраном из браузера?


Я работаю на основе мобильного тестирования решения облака, которые должны поддерживать как IOS и Android. Он требует, чтобы подключенные мобильные устройства обрабатывались из браузера.

я узнал, что мобильное устройство имеет агент вид программы (что требует устройств для искоренятся) установлено, который

  • потоков мобильного экрана браузера
  • и впрыснуть события

Есть ли другой подход к выполнению этого, возможно, без укоренения/тюрьмы, нарушающих устройство?

Этот вопрос может показаться очень широким, но я стараюсь понять, как двигаться в правильном направлении.

Для iOS я беру ключ от this SOF question.

Любой указатель оценивается.


Update 1:
This question близка к тому, что я ищу.

Update 2: Я нашел Android Screen Library для Android устройств и протестировали его на пару устройств. Он не требует, чтобы устройство было внедрено, но требует перезапуска службы из командной строки на каждом перезагрузке устройства и не может заставить его работать на Lollipop..

Update 3: Хотя Android Screen Library помогает в захвате экрана без укоренения, но это не помогает инъекционные событий. Даже захват экрана кажется багги - когда-то захватывается черным патчем и не работает на Lollipop!

Update 4: Ссылки: perfecto mobile и device anywhere Кажется, они используют ADB обрабатывать множество вещей, как приложение установка/удаление, отправка события через adb shell input tap x y. Может ли кто-нибудь пролить свет?

Update 5: Я пришел через this SO Post из Adrian Taylor, инженер экс-RealVNC. Это наиболее подробное объяснение. Хотя у Android Lollipop есть MediaProjection API, но, похоже, он хранит скриншоты в виде файлов MP4 на SD-карте. Кроме того, согласно google dashboard - Aug 2015 обновление Lollipop по-прежнему составляет около 15% от базовой установки Android, поэтому Kitkat следует рассматривать для любого решения.

Update 6: Я нашел libvncserver, интересно, если это будет делать эту работу. Я проверю и опубликую результат.

Благодаря

+1

Просьба добавить комментарий со своим простым голосом;) Это поможет мне. – iuq

+0

Я не уверен, что это то, что вы ищете, но вы можете автоматизировать тестирование пользовательского интерфейса с помощью JavaScript. [Учебное пособие] (http://code.tutsplus.com/tutorials/introduction-to-ios-testing-with-ui-automation--cms-22730), [Документация] (https://developer.apple.com/ библиотека/mac/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/Using theAutomationInstrument/Using theAutomationInstrument.html) –

+0

@ Ислам Q - спасибо, это действительно хорошая статья. Но мой вопрос немного отличается, поскольку его больше о связности, а также решение будет использоваться в основном для ручного тестирования. – iuq

ответ

4

Используйте WebKit, это поможет вам в значительной степени так близко, как вы можете получить и еще более, чем вероятно, пройти через процесс утверждения с Яблоком

Вот простой пример, это в основном делает селектор на веб-странице, отправляет мне значение строки в приложении, вы обрабатываете , что значение и отправить результат, а затем вы публикуете в качестве заголовка веб-страницы.

<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 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); 

В конце приложения, настройки следующие:

// настроить WebView и место WebView на экране

[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]; 

ручка WebView события:

-(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

Спасибо за ваш ответ. Будет ли он работать только для веб-приложений и гибридных приложений или для собственных приложений? ... извините, я ничего не тестировал на iOS, пока я все еще пытаюсь выработать решение для Android. – iuq

+0

это чистый родной, это не для гибридов, его все для ObjC в этом случае, поэтому он настолько мощный – Loxx

Смежные вопросы