firefoxOptions
Die moz:firefoxOptions
-Fähigkeit ist ein namensraumkonfiguriertes Set von Funktionen, die spezifisch für Firefox sind. Sie wird verwendet, um das Verhalten von Firefox zu steuern und kann sowohl als Mitglied von alwaysMatch
als auch 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.
moz:firefoxOptions
ist ein JSON-Objekt, welches eines der folgenden Felder enthalten kann:
binary
(String)
Absoluter Pfad zur 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 Datei innerhalb dieses Pakets, z.B. /Applications/Firefox.app/Contents/MacOS/firefox-bin
.
Geckodriver wird versuchen, den Standardstandort von Firefox auf dem aktuellen System zu ermitteln, wenn er nicht definiert ist. Die Standardstandorte von Firefox sind:
System | Standardstandort |
---|---|
macOS |
|
Linux BSD |
Der erste gefundene % which firefox /usr/bin/firefox |
Windows |
Aus der Windows-Systemregistrierung:
|
args
(Array von Strings)
Kommandozeilenargumente, die an die Firefox-Binärdatei übergeben werden sollen. Diese müssen das führende Minuszeichen (-
) einschließen, falls erforderlich, z.B. ["-headless"]
.
Um Geckodriver ein bestehendes Profil im lokalen Dateisystem übernehmen zu lassen, können Sie ["-profile", "/path/to/profile"]
übergeben. Aber wenn ein Profil auf eine Zielmaschine übertragen werden muss, wird empfohlen, den Eintrag profile
zu verwenden.
profile
(String)
Base64-kodierter 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, aber für das Setzen benutzerdefinierter Präferenzen empfehlen wir, den prefs
(Preferences Objekt) Eintrag zu verwenden.
Profile werden im temporären Ordner des Systems erstellt. Hier wird auch das kodierte Profil extrahiert, wenn profile
bereitgestellt wird. Standardmäßig erstellt Geckodriver ein neues Profil an diesem Ort.
Das tatsächlich verwendete Profil in der WebDriver-Sitzung wird im moz:profile
-Fähigkeit im neuen Sitzungs-Response an den Benutzer zurückgegeben.
Um Geckodriver ein bestehendes Profil im Dateisystem übernehmen zu lassen, setzen Sie bitte das args
-Feld auf {"args": ["-profile", "/path/to/your/profile"]}
. Beachten Sie, dass, wenn Sie einen Remote-Client haben, der auf einen Server in einem anderen System zielt, das Profil bereits auf dem Zielsystem existieren muss.
log
(Log-Objekt)
Um die Protokollierungsdetails von Geckodriver und Firefox zu erhöhen, können Sie ein log
-Objekt übergeben, das wie {"log": {"level": "trace"}}
aussehen kann, um alle Protokolle auf Trace-Ebene und darüber einzuschließen.
prefs
(Preferences Objekt)
Mapping von Präferenznamen zu Präferenzwerten, die ein String, ein Boolean oder ein Integer sein können.
Android
Beginnend mit Geckodriver 0.26.0 existieren zusätzliche Fähigkeiten, wenn Firefox oder eine Anwendung, die GeckoView einbettet, auf Android kontrolliert 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 Release-Kanal, oder der Paketname der Anwendung, die GeckoView einbettet, z.B. org.mozilla.geckoview_example
.
androidActivity
(String, optional)
Der vollständig 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, um das Intent zu starten. Intern verwendet Geckodriver Android am, um die Android-Anwendung unter Test zu starten. Die angegebenen Intent-Argumente werden dem am start
-Befehl hinzugefügt. Siehe Androids Spezifikation für Intent-Argumente für Details. Dies ermöglicht die Kontrolle, wie die Anwendung gestartet wird, und das Einbeziehen optionaler Extras zum Aktivieren und Deaktivieren von Funktionen. Zum Beispiel, um mit der Ansichtsaktion und einer angegebenen URL vor dem Navigieren als Teil eines Tests zu starten, beinhalten Sie:
{
"androidIntentArguments": [
"-a",
"android.intent.action.VIEW",
"-d",
"https://example.com"
]
}
Zum Beispiel, um ein Boolean Extra zu spezifizieren, das mit android.content.Intent.getBooleanExtra verarbeitet werden kann, beinhalten Sie:
{
"androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}
env
(Env-Objekt)
Mapping von Umgebungsvariablennamen zu Umgebungsvariablenwerten, die beide Strings sein müssen, und an den Anwendungsprozess auf dem Android-Gerät weitergeleitet werden.
Log-Objekt
Ein JSON-Objekt, das eines dieser Felder haben kann:
level
(String)
Setzen Sie das Detaillevel der Protokollierung von Geckodriver und Firefox. Verfügbare Level sind trace
, debug
, config
, info
, warn
, error
, und fatal
. Wenn undefiniert, ist der Standard info
. Der Wert wird ohne Berücksichtigung der Groß-/Kleinschreibung behandelt.
Preferences Objekt
Ein JSON-Objekt mit einem Eintrag pro zu setzender Präferenz. Die Präferenz wird im Profil geschrieben, bevor Firefox gestartet wird. Eine vollständige Liste verfügbarer Präferenzen ist durch den Besuch von "about:config" in Ihrem Firefox-Browser erhältlich. Einige davon sind in dieser Quelle dokumentiert.
Ein Beispiel für ein Präferenz-Objekt:
{
"dom.ipc.processCount": 8,
"javascript.options.showInConsole": false
}
Env-Objekt
Ein JSON-Objekt mit einem Eintrag pro Umgebungsvariable, die gesetzt werden soll. Auf dem Desktop wird der zu testende Firefox mit der angegebenen Variablen in seiner Umgebung gestartet. Auf Android wird die GeckoView-basierte App die angegebene Variable in den env
-Block in ihrer Konfigurations-YAML haben.
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ähigkeitsobjekt, das eine spezifische Firefox-Binärdatei auswählt, um mit einem vorbereiteten Profil aus dem Dateisystem im Headless-Modus zu laufen. Es erhöht auch die Anzahl der IPC-Prozesse durch eine Präferenz, schaltet Chrome-Fehler/Warnungen in der Konsole aus und aktiviert eine detailliertere 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—innerhalb von alwaysMatch
oder in einem der firstMatch
Fähigkeitenobjekte platziert werden, wie hier zu sehen ist:
{
"capabilities": {
"firstMatch": [
{"moz:firefoxOptions": …}
]
}
}
Android
Dies führt die GeckoView-Beispielanwendung aus, wie sie auf dem ersten Android-Emulator läuft, der auf dem Host-Computer 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"
}
}
}
}
}