2015-09-17 6 views
8

Wir bauen eine Hybrid Native Anwendung (Cordova/Phonegap/Angular/Ionic).Navigieren Sie zu Url der Hybrid Native App in Appium mit Winkelmesser

Ich schreibe Ende-zu-Ende-Tests in Winkelmesser. Wenn sie lokal ausgeführt werden, werden sie gegen die Anwendung ausgeführt, die vom Ionic-Simulator (ionic serve) bedient wird. Das funktioniert gut.

Ich möchte auch die gleichen Tests gegen die "paketierte/gebaute" Anwendung auf einem Plattform-Simulator, von Sauce Labs (Appium) gehostet. Das funktioniert fast.

Das Problem, das ich gerade habe, navigiert zu der Anwendung. Wenn lokal ausgeführt werden, zu Beginn des Tests werde ich auf die Anwendung von ionischen gehosteten navigieren:

browser.get('http://localhost:8100') 

Das ist offensichtlich nicht in einem Simulator funktioniert eine Hybrid-native App läuft. Ich inspizierte die aktuelle URL des Browsers, wenn der Test gestartet und es ist:

file:///android_asset/www/index.html#/login 

Das macht Sinn und ist richtig. Aber wenn ich versuche:

schlimme Dinge passieren.

Ich suche eine von zwei Lösungen:

1) zu verstehen, wie für ein Hybrid native App laufen in einem Simulator

OR

2) irgendwie haben den Test zu navigieren URLS weiß, dass es innerhalb des hybriden nativen Cordova-Containers läuft und die Navigation zur Startseite überspringt (da die Anwendung automatisch vom Appium geladen wird).

Danke.

+2

Wenn Sie mit einem 'file: //' Protokoll navigieren möchten, werfen Sie einen Blick auf dieses Q/A - [Öffnen einer Datei mit Winkelmesser] (http://stackoverflow.com/questions/24824491/opening-a -file-mit-Winkelmesser). Außerdem gibt es eine Anleitung für den Winkelmesser für [Mobiles Setup] (https://github.com/angular/protractor/blob/master/docs/mobile-setup.md), die viele Informationen zum Einrichten von Winkelmesser mit Appium enthält. Um den Emulator zu identifizieren, können Sie eine Methode 'isCordova' implementieren, die den User Agent überprüft oder [cordova-plugin-device] (https://github.com/apache/cordova-plugin-device) verwendet, um festzustellen, ob das aktuelle env" mobile "env. –

+1

Wenn Sie versuchen, die gleichen Tests in zwei ziemlich unterschiedlichen Umgebungen auszuführen, sollten Sie vielleicht zwei Protractor-Konfigurationen mit verschiedenen Setups verwenden. –

+0

Dank @MichaelRadionov. Ich verwende bereits separate Winkelmesser Konfigurationen - es wurde natürlich benötigt, um Anmeldeinformationen und Fähigkeiten für Sauce/Appium vs lokal über Ionensimulator bedient zu setzen. Von dem, was ich verstehe, ist das Mobile Setup darauf ausgerichtet, eine Anwendung in einem "normalen" mobilen Browser - also Chrome - zu betreiben, anstatt eine hybride native App zu testen. Die Links, auf die Sie mich hingewiesen haben, sehen sehr hilfreich aus. Ich werde sehen, ob sie später helfen. –

Antwort

0

Ein wenig spät in das zu bekommen, aber wenn ich das Problem richtig verstehe, müssen Sie nur zwischen lokal und laufen durch Sauce zu unterscheiden. Da Sie bereits zwei Winkelmesser-Dateien haben, warum nicht einfach vermeiden, browser.get in der Sauce Config aufrufen? Oder ist etwas offensichtlich, dass ich vermisse?

+0

Ja, das ist im Wesentlichen, was ich Andrew getan habe. Es ist eine kleine Arbeit, denke ich, denn irgendwann möchte ich eine neue Suite schreiben, die an einem bekannten Ort beginnt.Normalerweise denke ich, dass dies erreicht wird, indem man einfach den Browser zum "Start" navigiert - wo auch immer diese spezielle Suite die Website antreibt. Für die mobile App habe ich keine Möglichkeit, eine "Startseite" festzulegen. Für jetzt habe ich eine Konvention angenommen, dass die Login-Tests zuerst kommen und dann jeder andere Test (der einen authentifizierten Benutzer annimmt) muss beginnen und auf der Home-Ansicht enden. –

+0

Hmmm ... nun, da ist die 'baseUrl' -Eigenschaft und' browser.getUrl ('/') 'sollte Sie zum Anfang führen. Solange Sie weiterhin relative Pfade verwenden, sollte es kein Problem geben, mit Ihrer Anwendung zu navigieren. –

Verwandte Themen