firefoxOptions
Die moz:firefoxOptions
Fähigkeit ist eine namensraumspezifische Menge von Fähigkeiten, die spezifisch für Firefox sind. Sie wird verwendet, um das Verhalten von Firefox zu steuern, und kann als Mitglied von alwaysMatch
oder als Mitglied eines von den firstMatch
Einträgen genutzt werden.
Sie wird verwendet, um Optionen festzulegen, die steuern, wie Firefox gestartet und ausgeführt wird.
moz:firefoxOptions
ist ein JSON-Objekt, das eines der folgenden Felder enthalten kann:
binary
(String)
Absoluter Pfad zu einer benutzerdefinierten Firefox-Binärdatei, die verwendet werden soll.
Auf macOS können Sie entweder den Pfad zum Anwendungspaket angeben, z. B. /Applications/Firefox.app
, oder den absoluten Pfad zur ausführbaren Binärdatei innerhalb dieses Pakets, z. B. /Applications/Firefox.app/Contents/MacOS/firefox-bin
.
geckodriver wird versuchen, den Standardort von Firefox auf dem aktuellen System zu ermitteln, wenn dieser nicht definiert ist. Die Standardorte von Firefox sind:
System | Standardort |
---|---|
macOS |
|
Linux BSD |
Erstes % which firefox /usr/bin/firefox |
Windows |
Aus der Windows-Systemregistrierung:
|
args
(Array von Strings)
Befehlszeilenargumente, die an die Firefox-Binärdatei übergeben werden. Diese müssen das führende Minuszeichen (-
) enthalten, wo erforderlich, z. B. ["-headless"]
.
Um geckodriver ein vorhandenes Profil im lokalen Dateisystem erkennen zu lassen, können Sie ["-profile", "/path/to/profile"]
übergeben. Wenn jedoch ein Profil auf eine Zielmaschine übertragen werden muss, wird empfohlen, den Eintrag profile
zu verwenden.
profile
(String)
Base64-codiertes ZIP eines Profilverzeichnisses, das für die Firefox-Instanz verwendet werden soll. Dies kann z. B. verwendet werden, um Erweiterungen oder benutzerdefinierte Zertifikate zu installieren. Für die Einstellung benutzerdefinierter Präferenzen empfehlen wir jedoch, den Eintrag prefs
(Preferences Object) zu verwenden.
Profile werden im temporären Ordner des Systems erstellt. Dies ist auch der Ort, an dem das codierte Profil extrahiert wird, wenn profile
bereitgestellt wird. Standardmäßig erstellt geckodriver ein neues Profil an diesem Ort.
Das tatsächlich vom WebDriver-Session verwendete Profil wird dem Benutzer in der moz:profile
-Fähigkeit in der neuen Sitzungsantwort zurückgegeben.
Um geckodriver ein vorhandenes Profil im Dateisystem erkennen 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 auf einen Server auf einem anderen System abzielt, das Profil bereits auf dem Zielsystem existieren muss.
log
(Log-Objekt)
Um die Protokollierung von geckodriver und Firefox zu erhöhen, können Sie ein log
-Objekt übergeben, das wie folgt aussehen könnte: {"log": {"level": "trace"}}
, um alle Protokollen auf Trace-Ebene und darüber zu erfassen.
prefs
(Preferences-Objekt)
Map von Präferenznamen zu Präferenzwert, was ein String, ein Boolean oder ein Integer sein kann.
Android
Ab 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
, abhängig vom Verteilungskanal, oder der Paketname der Anwendung, die GeckoView einbettet, z. B. org.mozilla.geckoview_example
.
androidActivity
(String, optional)
Der vollqualifizierte Klassenname der Aktivität, die gestartet werden soll, 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, um den Intent zu starten. Im Hintergrund verwendet geckodriver Android am, um die zu testende Android-Anwendung zu starten. Die angegebenen Intent-Argumente werden zum am start
-Befehl hinzugefügt. Siehe Androids Spezifikation für Intent-Argumente für Details. Auf diese Weise kann gesteuert werden, wie die Anwendung gestartet wird, und optionale Extras für das Aktivieren oder Deaktivieren von Funktionen können hinzugefügt werden. Um beispielsweise mit der View-Aktion und einer angegebenen URL zu starten, bevor im Rahmen eines Tests navigiert wird, schließen Sie ein:
{
"androidIntentArguments": [
"-a",
"android.intent.action.VIEW",
"-d",
"https://example.com"
]
}
Um beispielsweise ein boolean Extra zu spezifizieren, das mit android.content.Intent.getBooleanExtra verarbeitet werden kann, schließen Sie ein:
{
"androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}
env
(Env-Objekt)
Map von Umgebungsvariablennamen zu Umgebungsvariablenwerten, die beide Strings sein müssen und an den Prozess der Anwendung übergeben werden, der auf dem Android-Gerät läuft.
Log-Objekt
Ein JSON-Objekt, das eines dieser Felder haben kann:
level
(String)
Setzt das Niveau der Protokollierungsumfang von geckodriver und Firefox. Verfügbare Ebenen sind trace
, debug
, config
, info
, warn
, error
und fatal
. Wenn nicht definiert, ist der Standardwert info
. Der Wert wird nicht groß-/kleinschreibungssensitiv behandelt.
Preferences-Objekt
Ein JSON-Objekt mit einem Eintrag pro zu setzender Präferenz. Die Präferenz wird vor dem Start von Firefox in das Profil geschrieben. Eine vollständige Liste der verfügbaren Präferenzen ist durch Besuch von "about:config" in Ihrem Firefox-Browser verfügbar. Einige davon sind in dieser Quelle dokumentiert.
Ein Beispiel für ein Präferenzobjekt:
{
"dom.ipc.processCount": 8,
"javascript.options.showInConsole": false
}
Env-Objekt
Ein JSON-Objekt mit einem Eintrag pro zu setzender Umgebungsvariable. Auf einem Desktop wird das zu testende Firefox mit der gegebenen Variable in seiner Umgebung gestartet. Auf Android wird die GeckoView-basierte App die angegebene Variable in den env
-Block ihrer YAML-Konfiguration eingefügt haben.
Ein Beispiel für ein Env-Objekt:
{
"MOZ_LOG": "nsHttp:5",
"MOZ_LOG_FILE": "/mnt/sdcard/log"
}
Beispiel
Folgendes ist ein Beispiel für ein vollständiges Fähigkeitenobjekt, das eine bestimmte Firefox-Binärdatei auswählt, um sie mit einem vorbereiteten Profil vom Dateisystem im Headless-Modus auszuführen. Es erhöht auch die Anzahl der IPC-Prozesse durch eine Präferenz, schaltet Chrome-Fehler/Warnungen in der Konsole ab und aktiviert eine umfangreichere 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"
}
}
}
}
}
Das moz:firefoxOptions
muss – wie oben gezeigt – innerhalb von alwaysMatch
oder in einem der firstMatch
Fähigkeitenobjekte platziert werden, wie hier gezeigt:
{
"capabilities": {
"firstMatch": [
{"moz:firefoxOptions": …}
]
}
}
Android
Dies startet die GeckoView-Beispielanwendung, wie sie auf dem ersten Android-Emulator installiert ist, der auf dem Hostrechner läuft:
{
"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"
}
}
}
}
}