firefoxOptions
Die Fähigkeit moz:firefoxOptions ist ein Namensraum-set spezifischer Fähigkeiten für Firefox. Sie wird verwendet, um das Verhalten von Firefox zu steuern und kann als Mitglied von alwaysMatch oder als Mitglied eines der firstMatch-Einträge verwendet werden.
Sie wird verwendet, um Optionen zu definieren, die steuern, wie Firefox gestartet und ausgeführt wird.
Wert
moz:firefoxOptions ist ein JSON-Objekt, das eines der folgenden Felder enthalten kann:
binary (String)
Absoluter Pfad zum benutzerdefinierten Firefox-Binary, das verwendet werden soll.
Unter macOS können Sie entweder den Pfad zum Anwendungsbundle angeben, d.h. /Applications/Firefox.app, oder den absoluten Pfad zur ausführbaren Binärdatei innerhalb dieses Bundles, zum Beispiel /Applications/Firefox.app/Contents/MacOS/firefox-bin.
geckodriver versucht, den Standard-Speicherort von Firefox auf dem aktuellen System zu ermitteln, wenn er nicht definiert ist. Die Standardspeicherorte von Firefox sind:
| System | Standard-Speicherort |
|---|---|
| macOS |
|
| Linux BSD |
Erstes % which firefox /usr/bin/firefox |
| Windows |
Aus der Windows-Systemregistrierung:
|
args (Array von Strings)
Befehlszeilenargumente, die an das Firefox-Binary übergeben werden sollen. Diese müssen den führenden Bindestrich (-) enthalten, wenn erforderlich, z. B. ["-headless"].
Um geckodriver ein vorhandenes Profil auf dem lokalen Dateisystem aufnehmen zu lassen, können Sie ["-profile", "/path/to/profile"] übergeben. Wenn ein Profil jedoch auf eine Zielmaschine übertragen werden muss, wird empfohlen, den profile-Eintrag zu verwenden.
profile (String)
Base64-codiertes ZIP eines Profilverzeichnisses, das für die Firefox-Instanz verwendet werden soll. Dies kann z. B. genutzt werden, um Erweiterungen oder benutzerdefinierte Zertifikate zu installieren, aber für das Festlegen benutzerdefinierter Einstellungen empfehlen wir die Verwendung des prefs (Preferences Object)-Eintrags.
Profile werden im temporären Ordner des Systems erstellt. Dies ist auch der Ort, an dem das encodierte Profil extrahiert wird, wenn profile bereitgestellt wird. Standardmäßig wird geckodriver an diesem Ort ein neues Profil erstellen.
Das tatsächlich verwendete Profil in der WebDriver-Sitzung wird dem Benutzer in der moz:profile-Fähigkeit in der Antwort auf die neue Sitzung zurückgegeben.
Um geckodriver ein vorhandenes Profil auf dem Dateisystem aufnehmen zu lassen, setzen Sie bitte das args-Feld auf {"args": ["-profile", "/path/to/your/profile"]}. Beachten Sie, dass, wenn Sie einen Remote-Client verwenden, der einen Server auf einem anderen System ansteuert, das Profil bereits auf dem Zielsystem vorhanden sein muss.
log (Log-Objekt)
Um die Protokollierungs-Ausführlichkeit von geckodriver und Firefox zu erhöhen, können Sie ein log-Objekt übergeben, das wie {"log": {"level": "trace"}} aussieht, um alle Trace-Ebene-Protokolle und höher einzuschließen.
Ein JSON-Objekt, das eines dieser Felder haben kann:
level (String)
Setzt die Ausführlichkeit der Protokollierung von geckodriver und Firefox fest. Verfügbare Ebenen sind trace, debug, config, info, warn, error und fatal. Wenn nicht definiert, ist der Standard info. Der Wert wird ohne Berücksichtigung der Groß- und Kleinschreibung behandelt.
prefs (Präferenzen-Objekt)
Map von Präferenznamen zu Präferenzwert, der ein String, ein Boolean oder ein Integer sein kann.
Ein JSON-Objekt mit einem Eintrag pro zu setzender Präferenz. Die Präferenz wird in das Profil geschrieben, bevor Firefox gestartet wird. Eine vollständige Liste der verfügbaren Präferenzen ist aufrufbar durch Besuch von "about:config" in Ihrem Firefox-Browser. Einige davon sind in dieser Quelle dokumentiert.
Ein Beispiel für ein Präferenzen-Objekt:
{
"dom.ipc.processCount": 8,
"javascript.options.showInConsole": false
}
Android
Beginnend mit geckodriver 0.26.0 existieren zusätzliche Fähigkeiten, wenn Firefox oder eine Anwendung, die GeckoView einbettet, unter Android gesteuert werden soll:
androidPackage (String, erforderlich)
Der Paketname von Firefox, z. B. org.mozilla.firefox, org.mozilla.firefox_beta oder org.mozilla.fennec je nach Release-Kanal oder der Paketname der Anwendung, die GeckoView einbettet, z. B. org.mozilla.geckoview_example.
androidActivity (String, optional)
Der voll qualifizierte Klassenname der zu startenden Aktivität, z. B. .GeckoViewActivity. Wenn nicht angegeben, wird die Standardaktivität des Pakets verwendet.
androidDeviceSerial (String, optional)
Die Seriennummer des Geräts, auf dem die Anwendung gestartet werden soll. Wenn nicht angegeben und mehrere Geräte angeschlossen sind, wird ein Fehler zurückgegeben.
androidIntentArguments (Array von Strings, optional)
Argumente, die zum Starten des Intents verwendet werden. Hinter den Kulissen verwendet geckodriver Android am, um die zu testende Android-Anwendung zu starten. Die angegebenen Intent-Argumente werden an den am start-Befehl angehängt. Siehe Androids Spezifikation für Intent-Argumente für Details. Dies ermöglicht die Kontrolle, wie die Anwendung gestartet wird, und es können optionale Extras zum Aktivieren und Deaktivieren von Funktionen hinzugefügt werden. Um beispielsweise eine Ansichtsaktion mit einer angegebenen URL vor dem Navigieren im Rahmen eines Tests zu starten, fügen Sie Folgendes hinzu:
{
"androidIntentArguments": [
"-a",
"android.intent.action.VIEW",
"-d",
"https://example.com"
]
}
Beispielsweise, um ein boolesches Extra zu spezifizieren, das mit android.content.Intent.getBooleanExtra verarbeitet werden kann, fügen Sie Folgendes hinzu:
{
"androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}
env (Env-Objekt)
Map von Umgebungsvariablennamen zu Umgebungsvariablenwerten, die beide Strings sein müssen und die an den auf dem Android-Gerät laufenden Anwendungsprozess weitergeleitet werden.
Ein JSON-Objekt mit einem Eintrag pro zu setzender Umgebungsvariable. Auf dem Desktop wird der zu testende Firefox mit der gegebenen Variablen in seiner Umgebung gestartet. Auf Android wird die auf GeckoView basierende App die gegebene Variable dem env-Block in ihrer Konfigurations-YAML hinzufügen.
Ein Beispiel für ein env-Objekt:
{
"MOZ_LOG": "nsHttp:5",
"MOZ_LOG_FILE": "/mnt/sdcard/log"
}
Beispiel
Das folgende ist ein Beispiel für ein vollständiges Fähigkeiten-Objekt, das ein bestimmtes Firefox-Binary auswählt, um mit einem vorbereiteten Profil vom Dateisystem im headless-Modus ausgeführt zu werden. Es erhöht auch die Anzahl der IPC-Prozesse durch eine Präferenz, schaltet Chrome-Fehler/Warnungen in der Konsole aus und aktiviert eine ausführlichere Protokollierung:
{
"capabilities": {
"alwaysMatch": {
"moz:firefoxOptions": {
"binary": "/usr/local/firefox/bin/firefox",
"args": ["-headless", "-profile", "/path/to/my/profile"],
"prefs": {
"dom.ipc.processCount": 8,
"javascript.options.showInConsole": false
},
"log": { "level": "trace" },
"env": {
"MOZ_LOG": "nsHttp:5",
"MOZ_LOG_FILE": "/path/to/my/profile/log"
}
}
}
}
}
Die moz:firefoxOptions müssen — wie oben gezeigt — innerhalb von alwaysMatch oder in einem der firstMatch Fähigkeiten-Objekte platziert werden, wie hier zu sehen:
{
"capabilities": {
"firstMatch": [{ "moz:firefoxOptions": {} }]
}
}
Android
Dies führt die GeckoView-Beispielanwendung aus, wie sie auf dem ersten auf dem Hostsystem laufenden Android-Emulator installiert ist:
{
"capabilities": {
"alwaysMatch": {
"moz:firefoxOptions": {
"androidPackage": "org.mozilla.geckoview_example",
"androidActivity": "org.mozilla.geckoview_example.GeckoView",
"androidDeviceSerial": "emulator-5554",
"androidIntentArguments": ["-d", "http://example.org"],
"env": {
"MOZ_LOG": "nsHttp:5",
"MOZ_LOG_FILE": "/mnt/sdcard/log"
}
}
}
}
}