Veröffentlicht: April 6, 2020
Der umfassende Leitfaden für Selenium-Mobiltests
In der heutigen DevOps Ära, kontinuierliche Entwicklung und kontinuierliche Bereitstellung ist das Hauptziel von Software-Entwicklungsumgebungen. Der Code wird kontinuierlich weiterentwickelt und kontinuierlich getestet auch. Automatisierte Testtools sind der Schlüssel zur kontinuierlichen Bereitstellung von Anwendungen. Selenium ist ein beliebtes Testautomatisierungstool, das Selenium-Entwicklern hilft, kontinuierliche Tests in die Entwicklung zu integrieren. Es unterstützt mehrere Browser, Plattformen und Betriebssysteme.
Allerdings hat die Verbreitung von Smartphones eine breite Palette an Geräten, Plattformen und Betriebssystemen auf den Markt gebracht. Früher waren mobile Bildschirme klein und das Design nicht benutzerfreundlich. Das hat sich mit den Bildschirmen von heute geändert. Mobile-First-Apps sind mittlerweile der neue Trend. Dies erfordert, dass Unternehmen ihre Teststrategien entsprechend anpassen mobile App-Lösungen.
Mobile Apps sind benutzerfreundlicher und leichter zugänglich. Heutzutage nutzen immer mehr Menschen mobile Geräte, um online einzukaufen oder einen Dienst zu abonnieren. Mittlerweile werden 60 % der Geschäftsressourcen über Mobilgeräte abgerufen. Allerdings verwenden die meisten Tester Selenium Mobile Testing im Vergleich zu Appium, um Automatisierungslösungen zu testen.
Unterstützt Selenium das Testen mobiler Apps? Obwohl es mobile Tests nicht direkt unterstützt, bietet es Frameworks zum Testen mobiler Apps. Selendriod ist ein Selenium-basiertes Framework für mobile Tests, das es Unternehmen ermöglicht, automatisierte Tests auf Android-Geräten durchzuführen. Allerdings sind die Möglichkeiten hier begrenzt. Hier kommt Appium den Selenium-Entwicklern für mobile Tests zu Hilfe. Appium ist ein leistungsstarkes Framework für mobile Automatisierungstests, das auf Selenium basiert und plattform- und technologieübergreifende Unterstützung bietet. Hier können Sie einzelnen Testcode für Android und iOS schreiben.
Wenn Sie mehr über Selenium- und Appium-Tests mit SeeTest erfahren möchten, klicken Sie hier.
Technologieprotokoll
Selenium und Appium verwenden dasselbe Protokoll; JSON Wire-Protokoll. Dieses Protokoll wurde kürzlich zum Standard-W3C-Protokoll. Heutzutage implementieren viele Branchen sowie Browseranbieter es als Standardprotokoll.
Selenium-Architektur

Mit Selenium können Sie Code in verschiedenen Sprachen wie Java, PHP, C# und Python schreiben. Der Code wird über das JSON Wire-Protokoll ausgeführt. Bei diesem Protokoll handelt es sich um eine REST-API, die zur Steuerung des Browsers verwendet wird. Wenn der Code als HTTP-REST-Anfrage ausgeführt wird, wird vom Selenium-Server eine neue Sitzung erstellt. Anschließend wird der Browsertreiber (Chrome-Treiber, Safari-Treiber und Edge-Treiber) aufgerufen, um auf den Browser zuzugreifen. Der Browser sendet die angeforderten Informationen über den Browsertreiber an den Selenium-Server, der dann an den Client gesendet wird.
Komponenten des Selengitters

Selenium Grid enthält 3 Hauptkomponenten. Der Selenium Grid Hub ist die Servermaschine, die den Testauftrag an Knoten verteilt. Die Servermaschine entscheidet anhand der vordefinierten gewünschten Fähigkeiten, welcher Knoten den Test erhält. Der Selenium Grid Node ist die Maschine, die die vom Hub empfangenen Tests ausführt. Jeder Server kann mehrere Knoten haben. Der wd/hub ist der URL-Teil, der die Kommunikation zwischen dem Hub und dem Knoten erleichtert.
Appium-Architektur

Die Appium-Architektur ist der von Selenium ziemlich ähnlich. Appium ermöglicht Entwicklern mobiler Selenium-Tests außerdem das Schreiben von Code in mehreren Sprachen wie Java, PHP, C#, Python, Ruby, Javascript (WebdriverIO) und Javascript (WD). Appium implementiert jedoch auch andere Optionen. Wenn Sie beispielsweise Java verwenden, erbt es vom RemoteWebDriver. Der Appium-Server kann auf der Maschine oder in der Cloud installiert werden. Wenn der Befehl createSession() vom Appium-Client über das JSON Wire-Protokoll ausgeführt wird, erstellt der Appium-Server über den Appium-Treiber (Android-Treiber / iOS-Treiber) eine neue Sitzung auf dem mobilen Gerät. Für Android-Geräte wird die Android ADB-Infrastruktur verwendet. Bei Bedarf werden APKs auf dem Computer erstellt. Für iOS wird das mobile IDE-Framework verwendet und mit der Befehlszeile kommuniziert.
Die Idee hier ist, Dummy-Endlostests auf mobilen Geräten durchzuführen. Unter iOS wird XCUITest ausgeführt. Die Tests werden vom Server gesteuert.
Appium installieren
Die Installation von Appium für Android ist ziemlich einfach. Allerdings wird es etwas komplizierter, wenn Sie mit iOS-Geräten arbeiten. Die größte Herausforderung besteht darin, dass Sie eine Anwendung nicht einfach auf dem Gerät installieren können. Da es sich speziell um Entwickleranwendungen handelt, sollte jede Anwendung auf dem Gerät signiert sein. Wenn Sie Emulatoren verwenden, können Sie bestimmte Dinge umgehen. Darüber hinaus benötigen Sie eine Apple-Entwickler-ID, ein gültiges Entwicklungszertifikat, ein Bereitstellungsprofil, eine signierte IPA-Datei, XCode und Befehlszeilen-Entwicklertools. Darüber hinaus müssen Sie das Gerät für die Entwicklung in XCode einrichten.
Wenn Sie beispielsweise Java verwenden, müssen Sie die folgenden Aufgaben ausführen:
- Konfigurieren Sie Java
- Installieren Sie Homebrew
- Als nächstes installieren Sie node.js und npm
- Installieren Sie dann Appium
- npm install –g appium
- Zum Schluss installieren Sie wd
- npm install wd
- Konfigurieren Sie das Appium iOS-Gerät, das ilibmobiledevice installiert
- Konfigurieren Sie den XCUITest-Treiber
In diesem Tutorial finden Sie eine exemplarische Vorgehensweise zur Installation von Appium
http://appium.io/docs/en/about-appium/getting-started/#installing-appium
Matrixabdeckung
Zum Testen von Android-Apps können Sie Windows-, MAC- und Linux-Rechner verwenden. Um iOS-Apps zu testen, benötigen Sie jedoch ein MAC-Gerät. Die Cloud funktioniert sowohl für iOS- als auch für Android-Anwendungen.
Mobilgerät vs. Browser
Bevor Sie mit mobilen Tests beginnen, ist es wichtig, die Umgebungsunterschiede zwischen mobilen Geräten und Browsern zu verstehen.
- Gesten: Mobile Geräte nutzen unterschiedliche Eingabemöglichkeiten oder Gesten wie Wischen, Kneifen, Zwei-Finger-Berührung, Mehrfinger-Berührung usw., die in Webbrowsern nicht verfügbar sind.
- Anderes URL-System: Mobile Apps sind spezifisch für mobile Geräte, für die Sie keine regulären Web-URLs haben.
- Echte Geräte und Emulatoren: Sie testen an realen Geräten und Simulatoren. Für Android verwenden Sie für beide Optionen dieselben APKs. In iOS verwenden Sie jedoch unterschiedliche Technologien für reale Geräte und Simulatoren, da Simulatoren auf x64 laufen, während echte Geräte Armprozessoren verwenden. Sie müssen also beide Optionen testen.
- Buttons: Mobilgeräte sind mit Tasten wie „Home“, „Ein/Aus“ und „Lautstärke“ ausgestattet. Sie müssen sie beim Testen berücksichtigen.
- Startbildschirm: Mobilgeräte verfügen über einen Startbildschirm mit einer Benachrichtigungsleiste. Daher sollten Interaktionen auf dem Startbildschirm berücksichtigt werden.
- Rotierender Bildschirm: Der mobile Bildschirm kann in Hoch- und Querformat geändert werden, wobei sich die Bildschirmgröße ändert.
- Verschiedene Netzwerkverbindungen: Die Netzwerkbedingungen wie 2G, 3G, 4G, 5G sollten berücksichtigt werden. Insbesondere Funktionstests sollten bei unterschiedlichen Internetgeschwindigkeiten durchgeführt werden.
Mobile Apps vs. Web-Apps
Wenn es um Anwendungen geht, unterscheiden sich mobile Apps von ihren Web-Pendants:
- Anwendungslebenszyklus: Der Lebenszyklus mobiler Apps ist unterschiedlich und komplex. Sie können Apps installieren, deinstallieren, starten und schließen.
- Zustandsbehaftete Navigation: Mobile Apps merken sich Ihre Sitzung und reagieren entsprechend, wenn Sie sich das nächste Mal anmelden. Es ist zustandsbehafteter. Auch die Navigation ist einfach
- DOM-UI-Technologien: sind für iOS und Android unterschiedlich
- Clientseitiges Scripting: wie JavaScript ist in mobilen Apps nicht verfügbar
- Debugging-Tool: (z. B. F12 in Chrome) ist nicht verfügbar.
Mobile Fähigkeiten
Für lokale Funktionen sollten Sie die folgenden Details angeben:
- Plattformname: Geben Sie die Plattform an (iOS / Android)
- Gerätename: Geben Sie den Gerätenamen an (da Sie mehrere Geräte verwenden)
- Automatisierungsname: Geben Sie die verwendete Automatisierungstechnologie an (z. B. XCUITest für iOS).
- App: Um eine Anwendung zu installieren, geben Sie den APK-Pfad an
- bundleId/appActivity: Geben Sie die Bundle-ID der App an. Bei Android gibt es Bundle-Aktivitäten und spezifische Aktivitäten, die Sie in Ihrer Anwendung starten können. Für iOS gibt es jedoch nur Bundle-Aktivität.
Cloud-Funktionen
Wenn Selenium-Entwickler die Cloud-Technologie nutzen:
- Zugangsschlüssel: Der Zugriffsschlüssel ermöglicht den Zugriff auf Ferntests
- Geräteabfrage: Um die Geräte zu finden, die in der Cloud verwendet werden
Mobile Befehle
Um mobile Befehle zu überlasten, können Selenium-Entwickler ExecuteScript verwenden. Einige der mobilen Befehle im Zusammenhang mit der Anwendung:
- App installieren
- launchApp
- resetApp
- App entfernen
- BeendenApp
- runAppInBackground
Einige Beispiele für Gerätebefehle
- Zahnscheiben
- Sichere dir
- Drehen
- Shake
- Tastatur ausblenden
- isLock
Alle verfügbaren Befehle finden Sie auf dieser Appium-Seite: http://appium.io/docs/en/commands/mobile-command/
Wie erstelle ich einen mobilen Test mit Selenium und Appium?
Verwendung von Selen
Schritt 1: Gradle-Datei erstellen
Um den Test zu starten, öffnen Sie Ihre IDE. Wenn Sie beispielsweise Java verwenden, können Sie zur IntelliJ IDE wechseln
- Erstellen Sie ein neues Projekt
- Wählen Sie Gradle aus (Sie können andere Optionen wie Maven verwenden)
- Geben Sie dem Projekt einen Namen (z. B. Selenium 2).
- Klicken Sie auf Fertig stellen
Schritt 2: Selen in Gradle hinzufügen
- Um Code für Selenium Gradle hinzuzufügen, gehen Sie zu Google und suchen Sie nach Selenium Gradle.
- Öffnen Sie den Maven-Repository-Link: https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/2.41.0
- Klicken Sie auf die neueste Version

- Wenn Sie auf die neue Version klicken, wird die neue Version angezeigt. Allerdings wird jetzt die Alpha-Version angezeigt. Klicken Sie auf Selenium Java.

- Wählen Sie auf der nächsten Seite die neueste Version

- Kopieren Sie den Code von dieser nächsten Seite und fügen Sie ihn in das Feld „IDE-Abhängigkeiten“ ein. Es werden alle erforderlichen Abhängigkeiten heruntergeladen, falls Ihr Gerät diese nicht hat.

- Für diesen Test verwenden wir TestNG. Importieren Sie also den Selenium TestNG- und Chrome-Treiber. Sie können den Chrome-Treiber hier herunterladen: https://chromedriver.chromium.org/
- Erstellen Sie ein neues Paket (Verzeichnis) und benennen Sie es (z. B. William.demo).
- Erstellen Sie eine Klasse (z. B. williamSeleniumdemo)
- Jetzt sind Sie mit allen erforderlichen Elementen fertig. Schreiben Sie den Code für einen Selenium-Test
- Beispielsweise können Sie mit „driver.get()“ eine URL öffnen und darauf warten, dass die Seite geladen wird
- Driver.navigate() zum Navigieren zwischen Seiten
- findElement(By.xpath())
- Driver.quit(), um alle Browser zu schließen
- Führen Sie den Test aus
Appium-Test
Das Testen von iOS-Geräten mit Appium ist im Vergleich zu Android-Geräten etwas komplex. Daher wird in dieser Testanleitung das iOS-Gerät zum Testen verwendet.
- Öffnen Sie die IntelliJ-IDE.
- Fügen Sie Appium-Abhängigkeiten zum Gradle hinzu (entfernen Sie Selenium-Abhängigkeiten, falls vorhanden).
- Installieren Sie den iOS-Treiber (WebDriver verfügt nicht über spezielle iOS-Befehle).
- Selenium-Entwickler können den Selenium-Test als Basis verwenden und Änderungen daran vornehmen, um ihn zum iOS-Test zu machen.
- Definieren Sie die gewünschten Funktionen (Es hilft Ihnen, eine Karte mit Schlüsselwerten zu erstellen, um die Art der Anmeldung beim Cloud-Format, den Anwendungsstart usw. zu definieren.)
- Für den Zugriff auf Geräte benötigen Sie einen Zugangsschlüssel. Gehen Sie also zu Ihrer Cloud-Umgebung und erstellen Sie einen Zugriffsschlüssel.
- Erstellen Sie einen Namen für den Test (z. B. WilliamAppium-Test).
- Wählen Sie die zu verwendende Anwendung aus und rufen Sie die Bundle-ID ab. Sie können auch in die Cloud-Umgebung gehen und die Anwendung auf das Gerät hochladen.
- Definieren Sie den MobileCapabilityType
- Starten Sie den Treiber, indem Sie einen neuen iOS-Treiber erstellen und die wd-URL angeben
- Führen Sie nun den Test über die IDE aus. Der Treiber wird gestartet und der Test auf Mobilgeräten ausgeführt.
- Gehen Sie zur Cloud-Seite und öffnen Sie das Gerät, um eine Live-Ansicht zu sehen, wie die Anwendung installiert, gestartet und geschlossen wird.
Ausführen des Tests über die Appium App

- Gehen Sie zu Appium
- Erstellen Sie eine neue Sitzung
- Es gibt mehrere Cloud-Anbieter. Wählen Sie einen Cloud-Anbieter

- Geben Sie den Benutzernamen und den Zugangsschlüssel ein
- Definieren Sie den Plattformnamen (z. B. iOS)
- Definieren Sie die DeviceQuery (z. B.: os=iOS)
- Klicken Sie auf Sitzung starten
- Das Gerät wird automatisch ausgewählt. Sie können den Appium-Desktop verwenden, um verschiedene Elemente und die Eigenschaften der Elemente zu identifizieren.
- Schreiben Sie den Code
- Driver.findelement(by.xpath)
- Sendkeys() (Benutzername und Passwort)
- Führen Sie den Code aus. Jetzt wird ein anderes Gerät ausgewählt
- Gehen Sie in die Cloud und prüfen Sie, wie der Test auf verschiedenen Geräten läuft.
- Sie können zum Debuggen einen Haltepunkt festlegen.
Das ist es! Jetzt haben Selenium-Entwickler die Tests erfolgreich mit Appium durchgeführt.
Klicken Sie hier, um mehr über Appium- und Selenium-Tests mit Experitest zu erfahren.
Auch interessant
Appium und moderne mobile Frameworks: Automatisierungsherausforderungen verstehen
Die mobile Automatisierung hat sich im letzten Jahrzehnt deutlich weiterentwickelt, vor allem…
Der Mythos der Automatisierungsabhängigkeit: Migration von Quantum ohne Neuschreibungen
Während meiner Gespräche mit so vielen QA-Teams in Unternehmen…
Automatisierungsorientiertes App-Design-Framework & Best Practices
Ein Konzept, das Entwicklern zeigt, wie sie ihre Apps gestalten können…
