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
Starten Sie den Android Debug Bridge-Server (adb) des Android SDK:
$ adb start-server
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
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