Android

Abhängigkeiten

Die Binärdateien für ChromeDriver sind als ZIP-Dateien für verschiedene Hostplattformen gepackt auf der Seite Downloads verfügbar.

Unterstützte Apps

ChromeDriver unterstützt das Ausführen von Tests für den Chrome-Browser (Version 30 und höher) und WebView-basierte Apps ab Android 4.4 (KitKat), bei denen Web-Debugging und JavaScript aktiviert sind. Sie können die Chrome App hier installieren:

Stabile Version: https://play.google.com/store/apps/details?id=com.android.chrome

Selenium WebDriver-Sprachbindungen

Die standardmäßigen WebDriver-Sprachbindungen des Seleniumprojekts müssen für die Sprache Ihrer Wahl installiert werden, um Ihre Tests zu schreiben. Diese Bibliothek ist über Ihren nutzerfreundlichen lokalen Paketmanager oder über das Selenium-Projekt (https://www.seleniumhq.org/download/) erhältlich. Die Sprachbindungen für Python können beispielsweise mit „pip“ installiert werden.

$ pip install selenium

Android SDK

Das SDK kann unter developer.android.com/sdk/ heruntergeladen werden.

Geräteanforderungen

Ab Chrome-Version 33 wird kein Root-Gerät mehr benötigt. Bei Tests mit niedrigeren Versionen von Chrome mussten die Geräte gerootet werden, da ChromeDriver Schreibzugriff auf das Verzeichnis /data/local benötigt, um die Befehlszeilenargumente von Chrome festzulegen.

ChromeDriver ausführen

  1. Starten Sie den Android Debug Bridge-Server (adb) des Android SDK:

    $ adb start-server
    
  2. Vergewissern Sie sich bei Tests in der Chrome-App vor Version 33, dass die ADB-Shell Lese-/Schreibzugriff auf das Verzeichnis "/data/local" auf dem Gerät hat:

     $ adb shell su -c chmod 777 /data/local
    
  3. Generell wird empfohlen, ChromeDriver über die Selenium-Bibliothek zu starten. Sie können den Browser aber auch manuell über die Befehlszeile starten. Weitere Informationen finden Sie unter Erste Schritte.

    $ ./chromedriver
    

Android-spezifische Optionen

Die folgenden Chrome-Optionen gelten sowohl für Chrome- als auch für WebView-Apps:

  • androidPackage: der Paketname der Chrome- oder WebView-App.
  • androidDeviceSerial (optional): Die Seriennummer des Geräts, auf dem die App gestartet werden soll. Weitere Informationen finden Sie unten im Abschnitt „Mehrere Geräte“.
  • androidUseRunningApp (optional): Hängen Sie die Datei an eine bereits ausgeführte App an, anstatt sie mit einem freien Datenverzeichnis zu starten.

Die folgenden Funktionen gelten nur für WebView-Apps.

  • androidActivity: Name der Aktivität, die das WebView hostet.
  • androidProcess: (optional) Prozessname der Aktivität, die das WebView hostet (wie von ps angegeben). Wenn nicht angegeben, wird angenommen, dass der Prozessname mit androidPackage identisch ist.

Test ausführen

Bei Tests sollte der Paketname der App über die Option androidPackage an ChromeDriver übergeben werden. Ein minimaler Python-Test sieht beispielsweise so aus:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('androidPackage', 'com.android.chrome')
driver = webdriver.Chrome('./chromedriver', options=options)
driver.get('https://google.com')
driver.quit()

Mehrere Geräte

Wenn Sie ein bestimmtes Gerät für eine Sitzung verwenden möchten, geben Sie androidDeviceSerial als Chrome-Option an.

Wenn keine Seriennummer angegeben ist, wählt der Server nach dem Zufallsprinzip ein nicht verwendetes Gerät aus, das mit jeder Sitzung verknüpft wird. Wenn auf allen Geräten bereits aktive Sitzungen vorhanden sind, wird ein Fehler zurückgegeben. Daher sollten die Tests darauf achten, dass nach Abschluss der Tests „beendet“ aufgerufen wird.

Mit wd/hub verbinden

Wenn Ihre Tests eine Verbindung zu wd/hub erwarten, können Sie beim Starten des Servers --url-base=wd/hub hinzufügen:

$ ./chromedriver --url-base=wd/hub