Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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
  1. /Applications/Firefox.app/Contents/MacOS/firefox-bin
  2. $HOME/Applications/Firefox.app/Contents/MacOS/firefox-bin
Linux
BSD

Zuerst wird das firefox im Systempfad gefunden. Dies entspricht der Ausgabe des folgenden Befehls 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)

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:

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

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

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

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

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

moz:firefoxOptions muss—wie oben gezeigt—innerhalb von alwaysMatch platziert werden oder in einem der firstMatch Capabilities Objekte, wie hier gezeigt:

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

Android

Dies führt die GeckoView-Beispielanwendung aus, die auf dem ersten Android-Emulator auf dem Host-Computer 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