firefoxOptions

Die moz:firefoxOptions-Fähigkeit ist eine benannte Menge von Fähigkeiten spezifisch 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.

moz:firefoxOptions ist ein JSON-Objekt, das eines der folgenden Felder enthalten kann:

binary (Zeichenkette)

Absoluter Pfad zur benutzerdefinierten Firefox-Binärdatei, die verwendet werden soll.

Unter 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, zum Beispiel /Applications/Firefox.app/Contents/MacOS/firefox-bin.

geckodriver wird versuchen, den Standardstandort von Firefox auf dem aktuellen System abzuleiten, wenn es undefiniert bleibt. Die Standorte von Firefox sind standardmäßig:

System Standardstandort
macOS
  1. /Applications/Firefox.app/Contents/MacOS/firefox-bin
  2. $HOME/Applications/Firefox.app/Contents/MacOS/firefox-bin
Linux
BSD

Der erste auf dem Systempfad gefundene firefox. Dies ist äquivalent zur Ausgabe der Ausführung which(1):

% which firefox
/usr/bin/firefox
Windows

Aus der Windows-Systemregistrierung:

  1. HKEY_LOCAL_MACHINE\SOFTWARE WOW6432Node\Mozilla\Mozilla Firefox\[VERSION]\Main\PathToExe
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\[VERSION]\Main\PathToExe
args (Array von Zeichenketten)

Befehlszeilenargumente, die an die Firefox-Binärdatei übergeben werden. Diese müssen das führende Minuszeichen (-) enthalten, wo erforderlich, z. B. ["-headless"].

Um dass geckodriver ein vorhandenes Profil im lokalen Dateisystem erkennt, können Sie ["-profile", "/path/to/profile"] übergeben. Aber wenn ein Profil zu einem Zielrechner übertragen werden muss, wird empfohlen, den profile-Eintrag zu verwenden.

profile (Zeichenkette)

Base64-kodiertes ZIP-Verzeichnis eines Profils, 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 die Einstellung benutzerdefinierter Präferenzen empfehlen wir die Verwendung des prefs-(Präferenzen-Objekts)-Eintrags stattdessen.

Profile werden im temporären Ordner des Systems erstellt. Hier wird auch das codierte Profil extrahiert, wenn profile angegeben ist. Standardmäßig erstellt geckodriver ein neues Profil an diesem Ort.

Das effektive Profil, das von der WebDriver-Sitzung verwendet wird, wird dem Benutzer in der moz:profile- Fähigkeit in der neuen Sitzungsantwort zurückgegeben.

Um dass geckodriver ein vorhandenes Profil im Dateisystem erkennt, setzen Sie bitte das args-Feld auf {"args": ["-profile", "/path/to/your/profile"]}. Beachten Sie, dass wenn Sie einen entfernten Client verwenden, der auf einen Server auf einem anderen System abzielt, das Profil bereits auf dem Zielsystem existieren muss.

log (Log-Objekt)

Um die Protokollierungsverbosität von geckodriver und Firefox zu erhöhen, können Sie ein log- Objekt übergeben, das folgendermaßen aussehen kann {"log": {"level": "trace"}}, um alle Trace-Level-Protokolle und höher einzubeziehen.

prefs (Präferenzen-Objekt)

Zuordnung von Präferenznamen zu Präferenzwerten, die eine Zeichenkette, ein Boolean oder eine Zahl sein können.

Android

Ab geckodriver 0.26.0 existieren zusätzliche Fähigkeiten, wenn Firefox oder eine Anwendung, die GeckoView einbettet, auf Android gesteuert 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 aktivierten Aktivität, z. B. .GeckoViewActivity. Wenn nicht angegeben, wird die Standardaktivität des Pakets verwendet.

androidDeviceSerial (Zeichenkette, 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 Zeichenketten, optional)

Argumente, um den Intent zu starten. Unter der Haube verwendet geckodriver Android am, um die Android-Anwendung unter Test zu starten. Die angegebenen Intent-Argumente werden dem am start-Befehl angehängt. 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 Ansichtaktion und einer angegebenen URL vor dem Navigieren als Teil eines Tests zu starten, schließen Sie ein:

json
{
  "androidIntentArguments": [
    "-a",
    "android.intent.action.VIEW",
    "-d",
    "https://example.com"
  ]
}

Zum Beispiel, um eine Boolean-Zusatzoption anzugeben, die mit android.content.Intent.getBooleanExtra verarbeitet werden kann, schließen Sie ein:

json
{
  "androidIntentArguments": ["--ez", "customBooleanFlagName", "true"]
}

env (Env-Objekt)

Zuordnung von Umgebungsvariablennamen zu Umgebungsvariablenwerten, wobei beide Zeichenketten sein müssen, die an den Anwendungsprozess auf dem Android-Gerät weitergeleitet werden.

Log-Objekt

Ein JSON-Objekt, das eines dieser Felder haben kann:

level (Zeichenkette)

Setzt das Verbositätslevel von geckodriver und Firefox. Verfügbare Levels sind trace, debug, config, info, warn, error und fatal. Wenn undefiniert bleibt, ist der Standard info. Der Wert wird ohne Berücksichtigung der Groß- und Kleinschreibung behandelt.

Präferenzen-Objekt

Ein JSON-Objekt mit einem Eintrag pro einzustellender Präferenz. Die Präferenz wird ins Profil geschrieben, bevor Firefox startet. Eine vollständige Liste der verfügbaren Präferenzen ist erhältlich, indem "about:config" in Ihrem Firefox-Browser besucht wird. Einige davon sind in dieser Quelle dokumentiert.

Ein Beispiel eines Präferenzobjekts:

json
{
  "dom.ipc.processCount": 8,
  "javascript.options.showInConsole": false
}

Env-Objekt

Ein JSON-Objekt mit einem Eintrag pro Umgebungsvariable, die eingestellt werden soll. Auf dem Desktop wird das getestete Firefox mit der gegebenen Variable in seiner Umgebung gestartet. Auf Android, wird der App basierend auf GeckoView die gegebene Variable zum env-Block in ihrer Konfigurations-YAML hinzugefügt.

Ein Beispiel eines Env-Objekts:

json
{
  "MOZ_LOG": "nsHttp:5",
  "MOZ_LOG_FILE": "/mnt/sdcard/log"
}

Beispiel

Das Folgende ist ein Beispiel eines vollständigen Fähigkeiten-Objekts, das eine spezifische Firefox-Binärdatei auswählt, die mit einem vorbereiteten Profil vom Dateisystem im kopflose Modus ausgeführt werden soll. 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:

json
{
  "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ähigkeiten-Objekte wie hier:

json
{
  "capabilities": {
    "firstMatch": [
      {"moz:firefoxOptions": …}
    ]
  }
}

Android

Dies führt die GeckoView-Beispielanwendung aus, wie sie auf dem ersten Android-Emulator, der auf dem Host-Computer läuft, installiert ist:

json
{
  "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"
        }
      }
    }
  }
}

Siehe auch