firefoxOptions
Die moz:firefoxOptions
capability ist eine namensraumorientierte Menge von Fähigkeiten, die speziell für Firefox entwickelt wurden. 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.
moz:firefoxOptions
ist ein JSON-Objekt, das eines der folgenden Felder enthalten kann:
binary
(Zeichenkette)
Absoluter Pfad zum benutzerdefinierten Firefox-Binärprogramm, das verwendet werden soll.
Auf macOS können Sie entweder den Pfad zum Anwendungs-Bundle angeben, also /Applications/Firefox.app
, oder den absoluten Pfad zur ausführbaren Datei innerhalb dieses Bundles, zum Beispiel /Applications/Firefox.app/Contents/MacOS/firefox-bin
.
geckodriver versucht, den Standardspeicherort von Firefox auf dem aktuellen System zu ermitteln, wenn nicht anders angegeben. Die Standardspeicherorte von Firefox sind:
System | Standard-Speicherort |
---|---|
macOS |
|
Linux BSD |
Zuerst wird das % which firefox /usr/bin/firefox |
Windows |
Aus der Windows-Systemregistrierung:
|
args
(Array von Zeichenketten)
Kommandozeilenargumente, die an das Firefox-Binärprogramm übergeben werden. Diese müssen das führende Minuszeichen (-
) enthalten, wenn erforderlich, z.B. ["-headless"]
.
Um geckodriver ein vorhandenes Profil im lokalen Dateisystem verwenden zu lassen, können Sie ["-profile", "/path/to/profile"]
übergeben. Aber wenn ein Profil auf einen Zielrechner übertragen werden muss, wird empfohlen, den Eintrag profile
zu verwenden.
profile
(Zeichenkette)
Base64-kodiertes ZIP eines Profilverzeichnisses, das für die Firefox-Instanz verwendet werden soll. Dies kann verwendet werden, um z.B. Erweiterungen oder benutzerdefinierte Zertifikate zu installieren. Für das Setzen benutzerdefinierter Einstellungen empfehlen wir jedoch die Verwendung des prefs
(Preferences Object) Eintrags.
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 effektiv verwendete Profil der WebDriver-Sitzung wird dem Benutzer in der moz:profile
Fähigkeit in der neuen Sitzung Antwort zurückgegeben.
Um geckodriver ein vorhandenes Profil im Dateisystem verwenden 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 zielt, das Profil bereits auf dem Zielsystem vorhanden sein 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 zu erfassen.
prefs
(Preferences-Objekt)
Map vom Einstellungsnamen zum Einstellungswert, der eine Zeichenkette, ein boolescher Wert oder eine ganze Zahl sein kann.
Android
Seit geckodriver 0.26.0 existieren zusätzliche Fähigkeiten, wenn Firefox oder eine Anwendung, die GeckoView einbettet, auf Android kontrolliert werden muss:
androidPackage
(Zeichenkette, 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
(Zeichenkette, 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
(Zeichenkette, optional)
Die Seriennummer des Gerätes, auf dem die Anwendung gestartet werden soll. Wenn nicht angegeben und mehrere Geräte angeschlossen sind, wird ein Fehler zurückgegeben.
androidIntentArguments
(Array von Zeichenketten, optional)
Argumente, um den Intent zu starten. Intern verwendet geckodriver Android am, um die zu testende Android-Anwendung zu starten. Die angegebenen Intent-Argumente werden dem Befehl am start
hinzugefügt. Siehe Androids Spezifikation für Intent-Argumente für Details. Dies ermöglicht die Steuerung, wie die Anwendung gestartet wird, und das Hinzufügen optionaler Extras zum Aktivieren und Deaktivieren von Funktionen. Zum Beispiel, um mit der Ansicht Aktion und einer bestimmten URL zu starten, bevor als Teil eines Tests navigiert wird, fügen Sie ein:
{
"androidIntentArguments": [
"-a",
"android.intent.action.VIEW",
"-d",
"https://example.com"
]
}
Zum Beispiel, um ein boolesches Extra zu spezifizieren, das mit android.content.Intent.getBooleanExtra verarbeitet werden kann, fügen Sie ein:
{
"androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}
env
(Umgebungs-Objekt)
Map von Umgebungsvariablenname zu Umgebungsvariablenwert, beide müssen Zeichenketten sein, die an den Anwendungsprozess weitergeleitet werden, der auf dem Android-Gerät läuft.
Log-Objekt
Ein JSON-Objekt, das eines dieser Felder haben kann:
level
(Zeichenkette)
Setzt das Detailgradniveau für geckodriver und Firefox. Verfügbare Ebenen sind trace
, debug
, config
, info
, warn
, error
und fatal
. Wenn nicht anders angegeben, ist der Standardwert info
. Der Wert ist nicht empfindlich gegenüber Groß-/Kleinschreibung.
Preferences-Objekt
Ein JSON-Objekt mit einem Eintrag pro einzustellender Präferenz. Die Präferenz wird in das Profil geschrieben, bevor Firefox gestartet wird. Eine vollständige Liste der verfügbaren Einstellungen ist verfügbar, indem Sie "about:config" in Ihrem Firefox-Browser besuchen. Einige davon sind in dieser Quelle dokumentiert.
Ein Beispiel für ein Preferences-Objekt:
{
"dom.ipc.processCount": 8,
"javascript.options.showInConsole": false
}
Env-Objekt
Ein JSON-Objekt mit einem Eintrag pro einzustellender Umgebungsvariable. Auf dem Desktop wird das zu testende Firefox mit der angegebenen Variablen in seiner Umgebung gestartet. Auf Android wird die auf GeckoView basierende App die angegebene Variable im env
Block in ihrer YAML-Konfigurationsdatei haben.
Ein Beispiel für ein Env-Objekt:
{
"MOZ_LOG": "nsHttp:5",
"MOZ_LOG_FILE": "/mnt/sdcard/log"
}
Beispiel
Der folgende ist ein Beispiel für ein vollständiges Capabilities-Objekt, das ein spezifisches Firefox-Binärprogramm auswählt, um mit einem vorbereiteten Profil vom Dateisystem im Headless Mode 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 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"
}
}
}
}
}
moz:firefoxOptions
muss—wie oben gezeigt—innerhalb von alwaysMatch
platziert werden oder in einem der firstMatch
Capabilities Objekte, wie hier gezeigt:
{
"capabilities": {
"firstMatch": [
{"moz:firefoxOptions": …}
]
}
}
Android
Dies führt die GeckoView-Beispielanwendung aus, die auf dem ersten Android-Emulator auf dem Host-Computer 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"
}
}
}
}
}