Einrichten des automatischen Testens einer Hybridanwendung

In diesem Artikel möchte ich meine Erfahrungen bei der Lösung des Problems des automatisierten Testens einer mobilen Anwendung auf Android teilen.

Was ich erzählen werde:


  • Ausführen einer automatisierten Testumgebung mit Appium
    (PC-Betriebssystem - Windows 10)
  • So vermeiden Sie Fehler, die beim Ausführen von Tests in einer Hybridanwendung auftreten
  • Einige grundlegende Befehle zum Ausführen der einfachsten Tests. Wir werden Java und JavaScript verwenden

Herausforderung


Automatisieren Sie das Testen hybrider mobiler Apps.

Über die zu testende Anwendung:
PlattformAndroid
FrameworkAngular, Cordova, Ionic
BrowserZebrastreifen

Vielleicht sind dies die wichtigsten Punkte, die die Konfiguration des PCs für die Ausführung der Tests beeinflusst haben.

Testumgebung


Wir werden Appium als automatisiertes Testwerkzeug verwenden.
Kurz gesagt, dies ist ein Tool, mit dem Sie über den Server Befehle an den Client senden können, was zu tun ist und warum.

Ausführliche Informationen finden Sie auf der Website des Entwicklers .

Fangen wir an.

Erstellen Sie an einem für Sie geeigneten Ort auf der Festplatte den Ordner „Appium Automation“.

Zum Beispiel:

C:\Appium automation 

Erstellen Sie in diesem Ordner (C: \ Appium Automation) einige weitere Ordner:
Android SDKC: \ Appium-Automatisierung \ Android SDK
Android StudioC: \ Appium-Automatisierung \ Android Studio
APKC: \ Appium Automation \ APK
Appium libC: \ Appium-Automatisierung \ Appium Lib
Selenium libC: \ Appium Automation \ Selenium Lib

Wenn eine der von Ihnen installierten Anwendungen / Komponenten den Anweisungen folgt, verstehen Sie nur die Logik der Beziehung, d. H. Es ist nicht erforderlich, alles neu zu installieren.

Füllen Sie erstellte Ordner und laden Sie andere Komponenten


1. Java SDK


Folgen Sie dem Link und klicken Sie auf Download:



Als nächstes gelangen wir zur Download-Seite für verschiedene Betriebssysteme, wie Ich habe Windows 10 x64, wählen Sie:



Öffnen Sie die Datei nach dem Herunterladen und entpacken Sie die EXE-Shnik (wählen Sie den Pfad während der Installation aus) in den Ordner:

 C:\Program Files\Java\jdk-12.0.1 

(Versionsnummer zum Zeitpunkt des Downloads kann variieren)

2. Android Studio und Android SDK


Zum Herunterladen folgen Sie dem Link .

Im Ordner installieren:

 C:\Appium automation\Android Studio 

Beim ersten Start von Android Studio müssen Sie das Programm konfigurieren :

  • Instantyp Wählen Sie Benutzerdefiniert und klicken Sie auf Weiter
  • Wählen Sie ein Thema aus, das Ihnen gefällt, und klicken Sie auf Weiter
  • Android SDK-Speicherort Geben Sie C: \ Appium Automation \ Android SDK an und klicken Sie auf Weiter
  • Die Emulatoreinstellungen können auf Empfohlen belassen werden. Klicken Sie auf Weiter
  • Klicken Sie auf Fertig stellen und warten Sie, bis der Installationsvorgang abgeschlossen ist.

Erstellen Sie ein neues Projekt in Android Studio:

  • Klicken Sie auf Neues Android Studio-Projekt starten
  • Geben Sie den Namen, den Pfad zu Ihrem Projekt an, oder Sie können nichts ändern und den vorgeschlagenen verlassen. Klicken Sie auf Weiter
  • Wählen Sie in der Dropdown-Liste Telefon und Tablet die Option „API 23: Android 6.0 (Marshmallow)“ aus und klicken Sie auf Weiter
  • Wählen Sie Leere Aktivität und klicken Sie auf Weiter
  • Klicken Sie auf Weiter
  • Klicken Sie auf Fertig stellen

Installieren Sie die SDK-Tools

Wählen Sie in Android Studio Extras - SDK-Manager.

Im angezeigten Fenster wird der Abschnitt Android SDK ausgewählt.



Wählen Sie auf der Registerkarte SDK-Plattformen die Version von Android aus, auf der Sie Tests durchführen möchten.
Wählen Sie in den SDK-Tools die folgenden Elemente aus:

  • Android SDK Build-Tools
  • Android Emulator
  • Android SDK Plattform-Tools
  • Android SDK-Tools
  • Dokumentation für Android SDK
  • Support-Repository

Klicken Sie auf Übernehmen oder OK und warten Sie, bis der Download und die Installation der Komponenten abgeschlossen sind.



3. Erstellen Sie PATH-Variablen


Klicken Sie mit der rechten Maustaste auf "Arbeitsplatz" - "Eigenschaften" - "Erweiterte Systemeinstellungen".
Wählen Sie im folgenden Fenster auf der Registerkarte "Erweitert" die Option "Umgebungsvariablen ...".

Erstellen Sie im Block „Systemvariablen“ eine neue Variable.





Erste Variable

Variablenname - JAVA_HOME

Der Wert der Variablen ist

 C:\Program Files\Java\jdk-12.0.1 

(Der Pfad, unter dem Sie jdk in Schritt 1 installiert haben. In einigen Fällen kann es sein, dass der Ordner "Programme" als "Programme" (x86) bezeichnet wird.)

Zweite Variable

Variablenname - ANDROID_HOME

Der Wert der Variablen ist

 C:\Appium automation\Android SDK 

Hinzufügen von Pfadvariablen

Suchen Sie die Pfadvariable in der Liste der Systemvariablen und klicken Sie auf "Ändern ...".

Klicken Sie im angezeigten Fenster auf "Erstellen" und fügen Sie die Variablen hinzu:

  • % ANDROID_HOME% \ emulator
  • % ANDROID_HOME% \ Plattform-Tools
  • % ANDROID_HOME% \ tools
  • % ANDROID_HOME% \ tools \ bin

Als Ergebnis sollten Sie 4 neue Variablen erhalten, nach denen Sie auf OK klicken müssen.



4. Appium


Appium herunterladen:

  • Wir folgen dem Link http://appium.io/
  • Klicken Sie auf Download
  • Wir wählen Appium-windows-1.13.0.exe (die Versionsnummer zum Zeitpunkt des Ladens kann variieren)



Führen Sie die heruntergeladene EXE-Datei aus und installieren Sie Appium auf Ihrem PC. Während des Installationsvorgangs müssen Sie nur die Installation global oder für einen bestimmten Benutzer auswählen. Ich habe seitdem global installiert es ist mir egal

Herunterladen der Appium-Bibliotheken:




Verschieben Sie die heruntergeladene JAR-Datei in den Ordner

 C:\Appium automation\Appium Lib 




Verschieben Sie die heruntergeladene JAR-Datei in den Ordner:

 C:\Appium automation\Appium Lib 





Verschieben Sie die heruntergeladene JAR-Datei in den Ordner:

 C:\Appium automation\Appium Lib 

Laden Sie die Selenium-Bibliotheken herunter:




Entpacken Sie das heruntergeladene Archiv in den Ordner:

 C:\Appium automation\Selenium Lib 

5. IntelliJ IDEA Community Edition


Zum Herunterladen gehen Sie zum Link https://www.jetbrains.com/idea/download
Klicken Sie in der Nähe der Community-Version auf Download (dies ist eine kostenlose Version, die jedoch für automatische Tests ausreicht).

Die Download-Seite bietet einen Vergleich der Community- und Ultimate-Versionen.

Wenn Sie die Ultimate-Version kaufen möchten, können Sie dies sicher tun! Aber auch hier wird die Community-Version ausreichen.

Führen Sie die heruntergeladene EXE-Datei aus und installieren Sie sie (klicken Sie einfach auf Weiter, bis das Programm mit der Installation beginnt).

Erster Start von IntelliJ IDEA

  • Wählen Sie "Einstellungen nicht importieren".
  • Wir akzeptieren die Lizenzvereinbarung
  • Wählen Sie ein Thema
  • Klicken Sie auf Weiter
  • Klicken Sie auf Mit IntelliJ IDEA starten

Erstellen eines Projekts in IntelliJ IDEA

  • Wählen Sie Neues Projekt erstellen
  • Geben Sie den Pfad zum Java SDK an
    • Klicken Sie auf Neu ...
    • Geben Sie den Pfad zum zuvor geladenen Java SDK C: \ Programme \ Java \ jdk-12.0.1 an
  • Klicken Sie auf Weiter
  • Aktivieren Sie das Kontrollkästchen "Projekt aus Vorlage erstellen".
  • Klicken Sie auf Weiter
  • Geben Sie den Projektnamen und den Speicherort an, der gespeichert werden soll
  • Klicken Sie auf Fertig stellen

Einstellungen für das erstellte Projekt

Wählen Sie Datei - Projektstruktur ...

Wählen Sie im angezeigten Fenster Module - Abhängigkeiten - "+" - JARs oder Verzeichnisse ...



Und wir fügen dem Projekt alle zuvor geladenen Bibliotheken hinzu.



Klicken Sie auf OK.

Jetzt kann das Projekt Tests ausführen.

6. Einrichtung des Android-Geräts


Echtes Gerät
Sie benötigen ein USB-Kabel, um das Gerät an den Computer und das Smartphone selbst anzuschließen.

Gehen Sie zunächst auf dem Smartphone zu „Einstellungen“ - „Über das Telefon“.

Auf verschiedenen Smartphones ist alles anders, aber unter dem Strich müssen Sie die „Seriennummer“ suchen und 5-7 Mal darauf klicken, bis der Toaster mit der Meldung „Sie sind jetzt Entwickler“ angezeigt wird (der Text der Benachrichtigung kann von Modell zu Modell unterschiedlich sein).

Nach dieser Manipulation wird in den Einstellungen Ihres Telefons der Abschnitt "Für Entwickler" angezeigt. Es kann sich auch in verschiedenen Abschnitten von Modell zu Modell verstecken, z. B. irgendwo unter "Einstellungen" - "Für Entwickler" und irgendwo unter "Einstellungen" - "Sonderfunktionen" - "Für Entwickler" usw. .

Sie müssen zum Abschnitt "Für Entwickler" gehen und "USB-Debugging" aktivieren.

Wenn Sie Ihr Smartphone über USB anschließen, wird eine Meldung über die USB-Debugging-Berechtigung angezeigt. Sie können "Diesem Gerät vertrauen" aktivieren und auf "OK" klicken. Diese Meldung wird beim nächsten Anschließen des Telefons an diesen PC nicht mehr angezeigt.
Ihr gesamtes Smartphone ist bereit, in automatischen Tests zu arbeiten.

Virtuelles Gerät

Sie können ein virtuelles Gerät auch über Android Studio erstellen. Dann müssen Sie das reale Gerät nicht mit dem Computer verbinden.

Auf einem virtuellen Gerät können Tests jedoch langsamer ablaufen als auf einem realen.

Um es zu erstellen, öffnen Sie Android Studio und dann:

  • "Tools" - "AVD Manager" - "+ Virtuelles Gerät erstellen ..."
  • Wählen Sie ein Gerät aus und klicken Sie auf Weiter
  • Wählen Sie die gewünschte Version von Android und klicken Sie auf Weiter
  • Geben Sie den Gerätenamen an und klicken Sie auf Fertig stellen

Nach den vorgenommenen Manipulationen im Abschnitt „Extras“ - „AVD Manager“ sehen Sie das erstellte Gerät. Mit dem grünen Symbol „Wiedergabe“ können Sie das Gerät starten.

Wie kann ich überprüfen, ob Ihr PC das angeschlossene Gerät gesehen hat?

Führen Sie die Befehlszeile aus ("Start" - "Dienstprogramme - Windows" - "Eingabeaufforderung")
Geben Sie den Befehl adb Geräte ein.

Wenn das Gerät mit aktivierter USB-Debugging-Funktion verbunden ist, erhalten Sie das angeschlossene Gerät und seine UDID (Seriennummer):

 List of devices attached UDID device 

7. Wir schreiben ein Projekt


Import hinzufügen.

 package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; 

Wir registrieren den Server und wo er Anfragen senden muss

Installieren Sie den Android-Treiber:

 AndroidDriver<AndroidElement> driver = null; 

Wir setzen die Parameter (Eigenschaften):

 DesiredCapabilities capabilities = new DesiredCapabilities(); 

Der Name des Geräts (Sie finden ihn für das reale Gerät unter "Einstellungen" - "Über das Telefon" und für die virtuellen "Tools" - "AVD Manager" - das Feld "Name"):

 capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); 

Link zu der APK, die gestartet werden muss (.apk muss ein Debug-Build sein, damit Sie und Appium Anwendungen überprüfen können):

 capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-Apk.apk"); 

Starten Sie den Appium-Treiber:

 try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } 

Dieser Code reicht aus, um Ihre Anwendung auf dem angeschlossenen Gerät zu starten.

Zusätzliche Teams

Um das Projekt für eine bestimmte Zeit anzuhalten, zum Beispiel 8 Sekunden. (Wert wird in Millisekunden angegeben). Dies kann erforderlich sein, wenn Sie auf das Laden der Seite oder Anwendung warten müssen:

 Thread.sleep(8000); 

Wir erhalten ContextHandles, in denen wir verstehen, womit wir gerade arbeiten (NATIVE_APP oder WEBVIEW):

 Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } 

Weisen Sie dem zuletzt im Array empfangenen Wert den Kontext zu. Auf diese Weise können Sie korrekt zu WEBVIEW, tk wechseln. Standardkontext = NATIVE_APP:

 driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); 

Wir steuern die Anwendungsschnittstelle

Weil Wir arbeiten mit einer Hybridanwendung, d.h. Anwendungselemente werden in WEBVIEW und nicht in NATIVE_APP gerendert. In den meisten Fällen müssen wir einen Suchtyp für das Element findElementByCssSelector verwenden.

Klicken Sie auf die Schaltfläche OK:

 driver.findElementByCssSelector(".button-ok").click(); 

- wobei .button-ok die Elementklasse ist. Sie können die Element-ID auch genau verwenden.

Wir senden den Wert in das Feld, zum Beispiel haben Sie eine Suche und möchten den Wert "Kino" dorthin senden.

 driver.findElementByCssSelector(".search-input").sendKeys(""); 


Klicken Sie hier, um zu finden:

 driver.findElementByCssSelector(".search-button").click(); 

Auf diese Weise können Sie Ihre Anwendung bereits steuern.

Früher oder später werden Sie darauf stoßen, dass nicht alle Inhalte auf dem Smartphone-Bildschirm platziert werden, d. H. Sie müssen scrollen. Wenn ein Element während des Testvorgangs nicht auf dem Bildschirm angezeigt wird, gibt Appium den Fehler aus, dass das Element nicht angezeigt wird, und höchstwahrscheinlich werden alle weiteren Tests mit Fehlern abgedeckt.

Um auf dem Bildschirm zu scrollen, können Sie die JS-Funktion scrollIntoView in Java ausführen.

 ((JavascriptExecutor) driver).executeScript("document.querySelector('.button-ok').scrollIntoView({block: \"end\", behavior: \"smooth\"});"); 

In meinem Fall können Sie auf diese Weise zur Schaltfläche OK wechseln.

Es kann ein Vorfall sein, dass Sie alles richtig geschrieben haben, aber das Scrollen wird nicht ausgeführt.

Versuchen Sie, sich an andere Elemente auf dem Bildschirm zu binden. Führen Sie dies zunächst über die Konsole in Chrome - Inspect durch, damit Sie sicher sind, dass der Bildlauf beim Binden an dieses Element funktioniert.

Sie können mit Schritt 8 fortfahren und wenn alles für Sie funktioniert, dann ist das großartig!
Aber ich hatte noch eine andere Falle.
Er heißt Crosswalk Browser.

Als ich das Projekt startete, bekam ich ständig einen Fehler:

 “Make sure the app has its webview configured for debugging” 

Dies bedeutet, dass kein einziger Test durchgeführt wurde.

Was Sie in diesem Fall überprüfen müssen:


Fügen Sie nach diesen Manipulationen Ihrem Projekt weitere Funktionen hinzu.

 capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); 

- wobei C: \\ Knotenmodule \\ Appium-with-Crosswalk-Fix \\ Chromedriver \\ 2.28 \\ Chromedriver.exe
Dies ist der Weg zum festen Chromedriver

Ihr Projekt sieht also folgendermaßen aus:

 package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { AndroidDriver<AndroidElement> driver = null; DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-apk.apk"); capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); Thread.sleep(8000); driver.findElementByCssSelector(".search-input").sendKeys(""); driver.findElementByCssSelector(".search-button").click(); } 

Ein solches Projekt:

  • Installieren Sie Ihre Anwendung auf dem Gerät.
  • Suchen Sie das Suchfeld auf der Anwendungsseite
  • Wird dort die Bedeutung von "Kino" bringen
  • Klicken Sie auf die Schaltfläche "Suchen"

8. Wir starten das Projekt


Es gibt mehrere Hauptpunkte für den Start eines Projekts:

  • Starten Sie den Appium-Server (Punkt 4).
    • Verwenden Sie die Verknüpfung, um Appium zu starten
    • Klicken Sie auf "Server starten".
  • Schließen Sie das Gerät an einen PC an oder starten Sie ein virtuelles Gerät (Punkt 6).
  • Richten Sie ein Projekt ein (S. 5 und S. 7)
  • Klicken Sie auf Ausführen (oder in der IntelliJ IDEA-Symbolleiste oder auf Ausführen - 'Haupt' ausführen).
  • Genieße das Ergebnis

Nun, dann können Sie die Einstellungen testen. Die erforderlichen Informationen finden Sie auf der offiziellen Website des Entwicklers .
Appium kann auch zum Testen von iOS-Anwendungen verwendet werden.

Ich wollte kurz schreiben, aber es stellte sich wie immer heraus.

Vielen Dank an alle, die bis zum Ende gelesen haben, ich hoffe es war nützlich für Sie!

Source: https://habr.com/ru/post/de452742/


All Articles