Selenium Firefox Profil: Setup-Anleitung

⚡ Intelligente Zusammenfassung

Firefox Das Profil speichert die Lesezeichen, Passwörter, Add-ons und Einstellungen eines Browserbenutzers, und Selenium WebDriver kann ein dediziertes Profil laden, sodass jeder automatisierte Durchlauf von einem identischen, vorhersehbaren Browserzustand ausgeht.

  • 🔘 Profilgrundlagen: A Firefox Das Benutzerprofil enthält die Lesezeichen, gespeicherten Passwörter, Add-ons, Zertifikate und Einstellungen eines Benutzers in einem einzigen Ordner.
  • ☑️ Profilstandort: Windows, Linux und macOS Jeder Speicherort speichert die Profilordner unter einem anderen Pfad innerhalb des Benutzerverzeichnisses.
  • Profilerstellung: Der integrierte Profilmanager öffnet sich mit firefox.exe -p und erstellt in fünf Schritten ein sauberes Automatisierungsprofil.
  • 🧪 Code Zugriff: Die Klasse ProfilesIni liest profiles.ini, und getProfile gibt das benannte Profil als zurück. FirefoxProfilobjekt.
  • Aktuelle Syntax: Selenium 3 und 4 leiten das Profil weiter FirefoxOptions.setProfile anstelle von FirefoxTreiberkonstruktor.
  • ⚠️ Vorlieben: setPreference steuert den Download-Ordner, Benachrichtigungen, die Sprache und die Zertifikatsverwaltung vor dem Start des Browsers.

Selenium Firefox Profileinrichtungsanleitung

Selenium Firefox Profil

Firefox Profil ist die Sammlung von Einstellungen, Anpassungen, Add-ons und anderen Personalisierungseinstellungen, die auf dem Profil vorgenommen werden können Firefox Browser. Sie können anpassen Firefox Profil, das zu Ihnen passt Selenium Automatisierungsanforderung.

Ebenfalls, Firefox oder ein anderer Browser übernimmt die SSL-Zertifikatseinstellungen. Daher ist es sehr sinnvoll, sie zusammen mit dem Testausführungscode zu automatisieren.

Kurz gesagt, ein Profil sind die persönlichen Einstellungen eines Benutzers. Wenn Sie einen zuverlässigen Dienst ausführen möchten Automatisierung auf einem Firefox Es wird empfohlen, für jeden Browser ein separates Profil anzulegen. Ein solches Profil verhindert außerdem, dass Ihre alltäglichen Browserdaten in den Testlauf einbezogen werden, was als erstes ausgeschlossen werden sollte, wenn ein Browser verwendet wird. Selenium Das Skript verhält sich auf den beiden Rechnern unterschiedlich.

Speicherort Ihres Profilordners auf der Festplatte

Firefox Profil ist genau wie die Verwendung durch verschiedene Benutzer Firefox. Firefox Speichert persönliche Informationen wie Lesezeichen, Passwörter und Benutzereinstellungen, die über den Profilmanager bearbeitet, gelöscht oder erstellt werden können.

Der untenstehende Screenshot zeigt einen Profilordner, wie er auf der Festplatte erscheint; er ist nach dem Profil benannt, hat aber ein zufälliges Präfix.

Firefox Der Profilordner wird auf der Festplatte mit seinem zufälligen Präfix angezeigt.

Der Standort des Profils ist wie folgt

  • Für Windows > C:\Users\ \AppData\Roaming\Mozilla\Firefox\Profiles\profile_name.default
  • Für Linux > ~/.mozilla/firefox/profile_name.default/
  • Für Mac OS X > ~/Library/Application Support/Firefox/Profiles/profile_name.default/

Um erfolgreich zu sein Selenium Test, a Firefox Profil sollte sein –

  • Einfach zu laden
  • Proxy-Einstellungen, falls erforderlich
  • Weitere benutzerspezifische Einstellungen basierend auf Automatisierungsanforderungen

Wie einstellen Firefox Profil für Selenium Tests

Schauen wir uns Schritt für Schritt an, wie man ein/e erstellt Firefox Profil.

Schritt 1) Schließe Firefox Browser

Im ersten Schritt schließen Firefox Wenn es bereits geöffnet ist. Der Profilmanager startet nicht, während ein Firefox Das Fenster läuft.

Schritt 2) Lauf öffnen (Windows Taste + R) und geben Sie firefox.exe –p ein.

Der Ausführen-Dialog sollte vor dem Klicken auf OK wie im folgenden Screenshot aussehen.

Windows Führen Sie den Dialog mit dem Befehl firefox.exe -p aus.

Hinweis: Falls die Seite sich nicht öffnen lässt, können Sie versuchen, den vollständigen Pfad in Anführungszeichen einzuschließen.

  • Auf 32 Bit Windows: „C:\Programme\Mozilla Firefox„firefox.exe“ –p
  • Auf 64 Bit Windows (32bit Firefox): „C:\Program Files (x86)\Mozilla Firefox„firefox.exe“ –p

Schritt 3) Wählen Sie ein Benutzerprofil

Nun erscheint ein Dialogfeld mit dem Namen Firefox wird sich öffnen, wie unten dargestellt.

Firefox Dialogfeld „Benutzerprofil auswählen“ mit Auflistung der vorhandenen Profile

Schritt 4) Profil erstellen

Wählen Sie die im nächsten Screenshot gezeigte Option „Profil erstellen“, um den Assistenten zu starten.

Willkommensbildschirm des Profilerstellungsassistenten im Firefox Profilmanager

Wählen Sie nun im Fenster die Option „Profil erstellen“ und ein Assistent wird geöffnet. Klicken Sie auf Weiter.

Schritt 5) Geben Sie Ihren Profilnamen ein

Geben Sie im unten hervorgehobenen Feld einen Namen für das Automatisierungsprofil ein und schließen Sie den Assistenten ab.

Betreten eines neuen Firefox Profilname im Profilerstellungsassistenten

Jetzt ist Ihr Profil fertig. Sie können Ihr Profil auswählen und öffnen FirefoxAb hier verhält sich das Profil wie jede andere Browsersitzung, also ein erstes WebDriver-Skript wird unverändert dagegenlaufen.

Sie werden merken, dass das Neue Firefox Im Fenster werden keine Ihrer Lesezeichen und Favoritensymbole angezeigt.

Hinweis: Das zuletzt ausgewählte Profil wird beim nächsten Mal automatisch geladen. Firefox Start. Wenn Sie Profile ändern möchten, müssen Sie den Profilmanager neu starten.

Automatisierungsskript für Selenium

Nachdem das Profil erstellt wurde, muss es im nächsten Schritt per Code geladen werden. Um auf neu erstellte Profile zuzugreifen, … Firefox Profil in einem Selenium Für den WebDriver-Softwaretest müssen wir die in WebDriver integrierte Klasse ProfilesIni und ihre Methode getProfile verwenden, wie unten gezeigt.

⚠️ Versionshinweis: Die Ausschnitte in diesem Abschnitt sind die Originaltexte. Selenium 2. Form. Aktuell Selenium veröffentlicht die Klasse lebt in org.openqa.selenium.firefox.ProfilesIni - Die .internal Das Unterpaket wurde verworfen – und das Profil wird dem Fahrer übergeben durch FirefoxOptionen. Siehe die FirefoxIm Abschnitt „Optionen“ weiter unten finden Sie das moderne Äquivalent.

Selenium Code für das Profil

Dies ist ein Code zur Implementierung eines Profils, das in die folgende Struktur eingebettet werden kann: Selenium Code.

ProfilesIni profile = new ProfilesIni();

// Dadurch wird ein Objekt für erstellt Firefox profile

FirefoxProfile myprofile = profile.getProfile("xyzProfile");

// Dies wird die initialisieren Firefox Fahrer

WebDriver driver = new FirefoxDriver(myprofile)

Schauen wir uns die Implementierung dieses Codes in den folgenden Beispielen an.

Firefox Profilbeispiel 1

Das erste Beispiel lädt ein Profil anhand seines Namens. Der Screenshot unten zeigt dasselbe Skript im Editor.

Firefox Profilbeispiel 1: Skript zum Laden eines Profils anhand des Namens im Editor

// import the package
import java.io.File;
      import java.util.concurrent.TimeUnit;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class FirefoxProfile {
 	public static void main(String[] args) {
	ProfilesIni profile = new ProfilesIni();
	FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// Initialize Firefox driver
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window
	driver.manage().window().maximize();
//Go to URL which you want to navigate
	driver.get("http://www.google.com");
//Set  timeout  for 5 seconds so that the page may load properly within that time
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser
	driver.close();
}

}

Erklärung zum Code

Nachfolgend finden Sie die zeilenweise Erläuterung des Codes.

  • Code Zeile 2-7: Zunächst müssen wir das Paket importieren, das zum Ausführen des Programms erforderlich ist. Selenium Code.
  • Code Zeile 8: Erstellen Sie eine öffentliche Klasse „FirefoxProfil."
  • Code Zeile 9: Erstellen Sie ein Objekt (Sie benötigen Grundkenntnisse der OOP-Konzepte).
  • Code Zeile 10-11: Wir müssen initialisieren Firefox Profil mit dem Objekt myprofile.
  • Code Zeile 13: Objekt erstellen für Firefox.
  • Code Zeile 15: Fenster maximieren.
  • Code Zeile 17: driver.get wird verwendet, um zum angegebenen Pfad zu navigieren. URL.
  • Code Zeile 19: Mit der Einstellung timeout wird eine gewisse Zeit gewartet, damit der Browser die Seite laden kann, bevor er zur nächsten Seite übergeht.
  • Code Zeile 21: Schließen Firefox.

Betrachten wir noch ein Beispiel.

Firefox Profilbeispiel 2

Das zweite Beispiel überspringt profiles.ini und verweist direkt auf den Profilordner, wie der Screenshot des Editors zeigt.

Firefox Profilbeispiel 2 Skriptverweis FirefoxProfil unter einem Ordnerpfad

import java.io.File;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;

public class FirefoxProfile2{
public static void main(String[] args) {

// Create object for FirefoxProfile
	FirefoxProfilemyprofile=newFirefoxProfile (newFile("\c:users\AppData\MozillaFirefoxProfile_name.default "));  
// Initialize Firefox driver    
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window       
	driver.manage().window().maximize();
//Go to URL      
	driver.get("http://www.google.com");
//Set  timeout      
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser  
	driver.close();
    }

Erklärung zum Code

Nachfolgend finden Sie die zeilenweise Erläuterung des Codes.

  • Code Zeile 1-6: Zunächst müssen wir das Paket importieren, das zum Ausführen des Programms erforderlich ist. Selenium Code.
  • Code Zeile 8: Erstellen Sie eine öffentliche Klasse FirefoxProfil2.
  • Code Zeile 12: Erstellen Sie das Objekt myprofile, indem Sie auf den genauen Pfad verweisen.
  • Code Zeile 14: Objekt erstellen für Firefox.
  • Code Zeile 16: Fenster maximieren.
  • Code Zeile 18: driver.get wird verwendet, um zum angegebenen Pfad zu navigieren. URL.
  • Code Zeile 20: Mit der Einstellung timeout wird eine gewisse Zeit gewartet, damit der Browser die Seite laden kann, bevor er zur nächsten Seite übergeht.
  • Code Zeile 22: Schließen Firefox.

Beachten Sie, dass der Pfad in diesem Codeausschnitt exakt so geschrieben ist wie im Original-Tutorial. Auf einem realen Rechner müssen die Backslashes maskiert werden, zum Beispiel „C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\“.Firefox\\Profiles\\xyzProfile.default”.

Wie benutzt man a Firefox Profil in Selenium 4 mit FirefoxOptionen

Beide obigen Beispiele kompilieren nur gegen Selenium 2. Danach haben sich zwei Dinge geändert, und jedes aktuelle Tutorial verwendet die neuere Version.

  • ProfilesIni ist aus dem intern Unterpaket, daher lautet der Import jetzt org.openqa.selenium.firefox.ProfilesIni.
  • Das FirefoxTreiber(FirefoxDer Konstruktor „Profile“ wurde entfernt. Das Profil ist an ein Profil angehängt. FirefoxDas Optionsobjekt wird an den Treiber übergeben.
  • Selenium Bei 4 Timeouts wird eine java.time.Duration anstelle eines Wertes plus einer TimeUnit verwendet, daher wird aus implicitlyWait(5, TimeUnit.SECONDS) implicitlyWait(Duration.ofSeconds(5)).

Die folgende Tabelle ordnet jedem alten Aufruf seinen Nachfolger zu.

Legacy-Anruf (Selenium 2) Aktueller Anruf (Selenium 3 und 4)
import org.openqa.selenium.firefox.internal.ProfilesIni; import org.openqa.selenium.firefox.ProfilesIni;
neu FirefoxFahrer(meinProfil) options.setProfile(myprofile); new FirefoxTreiber(Optionen)
implicitlyWait(5, TimeUnit.SECONDS) implicitlyWait(Duration.ofSeconds(5))
System.setProperty für geckodriver Automatisch gelöst durch Selenium Geschäftsführer

Die Neufassung erfolgte anhand der aktuellen Version; Beispiel 1 sieht folgendermaßen aus.

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.ProfilesIni;

public class FirefoxProfileSelenium4 {
    public static void main(String[] args) {
        ProfilesIni allProfiles = new ProfilesIni();
        FirefoxProfile myprofile = allProfiles.getProfile("xyzProfile");

        FirefoxOptions options = new FirefoxOptions();
        options.setProfile(myprofile);

        WebDriver driver = new FirefoxDriver(options);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.get("https://www.google.com");
        driver.quit();
    }
}

Die Profilsuche selbst bleibt unverändert: ProfilesIni liest weiterhin profiles.ini aus dem Firefox Der Ordner „application-data“ und die Methode „getProfile“ geben weiterhin „null“ zurück, wenn der Name keinem Profil entspricht. Daher ist es sinnvoll, vor dem Start des Treibers eine Nullprüfung hinzuzufügen. Dasselbe Optionenobjekt enthält auch die an anderer Stelle verwendeten Argumente, beispielsweise für … Maximieren oder Verkleinern des Browserfensters.

Wie einstellen Firefox Profileinstellungen in Selenium

Ein gespeichertes Profil ist nur die halbe Miete. Die meisten Automatisierungen benötigen einige wenige im Code festgelegte Einstellungen, damit sich die Suite auf jedem Rechner gleich verhält. Die Methode `setPreference` schreibt diese Werte in die Profilkopie, bevor sie Firefox startet.

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\selenium-downloads");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
profile.setPreference("dom.webnotifications.enabled", false);
profile.setPreference("intl.accept_languages", "es");

FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);

Die folgenden Einstellungen decken die Fälle ab, die im täglichen Skripting am häufigsten auftreten.

Vorzug Was es steuert
browser.download.folderList Stellen Sie den Wert auf 2, um einen benutzerdefinierten Download-Ordner anstelle des Systemstandards zu verwenden.
browser.download.dir Der absolute Weg Firefox Speichert Downloads in.
browser.helperApps.neverAsk.saveToDisk MIME-Typen wurden gespeichert, ohne dass der Download-Dialog angezeigt wurde.
dom.webnotifications.enabled Auf „false“ setzen, um Web-Push-Benachrichtigungen zu unterdrücken.
intl.accept_languages Der Accept-Language-Header ist für Lokalisierungsläufe nützlich.
general.useragent.override Ersetzt den vom Browser gesendeten User-Agent-String.

Zwei Einschränkungen sind zu beachten. Die Einstellungen müssen vor der Treibererstellung festgelegt werden, da WebDriver das Profil beim Start kopiert und spätere Änderungen ignoriert werden. WebDriver reserviert außerdem einige wenige Einstellungen, die für die Kommunikation mit dem Browser benötigt werden, und überschreibt diese mit den zugewiesenen Werten. Da diese Werte im Profil und nicht im Skript gespeichert sind, werden sie auch übertragen. Cross-Browser-Tests Führen Sie den Test ohne Änderungen am Testcode durch.

gemeinsam Firefox Profilfehler in Selenium und wie man sie behebt

Profilprobleme äußern sich üblicherweise als Kompilierungsfehler oder dadurch, dass der Browser mit falschen Einstellungen geöffnet wird. Die Tabelle listet die am häufigsten gemeldeten Fehler sowie deren Ursachen auf.

Symptom Verursachen Fixieren
Der Konstruktor FirefoxTreiber(FirefoxProfil) ist undefiniert Der Konstruktor wurde entfernt, nachdem Selenium 2. Verpacken Sie das Profil in FirefoxOptionen und übergeben Sie stattdessen das Optionen-Objekt.
Import org.openqa.selenium.firefox.internal.ProfilesIni konnte nicht aufgelöst werden. Die Klasse wurde aus dem internen Unterpaket ausgelagert. Import org.openqa.selenium.firefox.ProfilesIni.
NullPointerException bei getProfile Der Profilname stimmt mit keinem Eintrag in profiles.ini überein. Öffnen Sie den Profilmanager erneut und kopieren Sie den Namen exakt, inklusive Groß- und Kleinschreibung.
Ihre Firefox Das Profil konnte nicht geladen werden. Es fehlt möglicherweise oder ist nicht zugänglich. Ein anderer Firefox Die Instanz enthält das Profil bereits, oder der Ordnerpfad ist falsch. Schließe alle Firefox Fenster, dann den Pfad mit den oben aufgeführten Speicherorten vergleichen.
Eine Präferenz hat keine Auswirkung Es wurde nach dem Start des Treibers festgelegt, oder WebDriver reserviert es. Verschieben Sie jeden setPreference-Aufruf über den FirefoxTreiberkonstruktor.

Wenn der Browser korrekt startet, das Skript aber anschließend trotzdem fehlschlägt, liegt die Ursache wahrscheinlich nicht im Profil. (Anmerkung: Der letzte Satz "Processing through" scheint irrelevant und fehlerhaft zu sein und wurde daher entfernt.) Ausnahmebehandlung in Selenium ist von diesem Punkt aus in der Regel die schnellere Route.

Häufig gestellte Fragen

Nein. FirefoxDer Treiber bearbeitet niemals ein bereits vorhandenes Profil. Er kopiert das Profilverzeichnis in einen temporären Speicherort, wendet die von WebDriver benötigten Einstellungen an und startet den Browser von dieser Kopie, sodass Ihre gespeicherten Lesezeichen und Passwörter unberührt bleiben.

Ja. Alle im Profil installierten Erweiterungen werden mit dem Browser geladen. Sie können auch `profile.addExtension(new File(“path/to/extension.xpi”))` aufrufen, um eine Erweiterung zur Laufzeit hinzuzufügen. Dadurch bleibt das Profil auf der Festplatte sauber.

Python hat kein Äquivalent in ProfilesIni. Punkt FirefoxDas Profil sollte stattdessen im Profilverzeichnis gespeichert und dann vor dem Erstellen des Treibers der Datei options.profile zugewiesen werden. Selenium Python dann die Bindungen klonen, genau wie Java tut.

KI-gestützte Testwerkzeuge vergleichen die bei erfolgreichen Testläufen erfassten Einstellungen mit dem aktuellen Profil und erkennen Abweichungen, beispielsweise Änderungen an einem Proxy oder Download-Ordner. Einige Frameworks nutzen zudem maschinelles Lernen, um profilbedingte Instabilitäten zu erkennen, bevor ein Build fehlschlägt.

GitHub-Copilot Erzeugt schnell den Boilerplate-Code, gibt aber oft die entfernten Zeilen aus. FirefoxTreiber(FirefoxDer Profil-Konstruktor stammt aus älterem Code. Überprüfen Sie immer, ob der Vorschlag verwendet wird. FirefoxOptions.setProfile und das aktuelle Paket vor dem Commit.

Ja. Rufen Sie `options.addArguments(-headless”)` zusammen mit `options.setProfile(profile)` auf. Das Profil stellt die Einstellungen und Erweiterungen genau wie zuvor bereit, da der Headless-Modus nur die Funktionsweise ändert. Firefox Es rendert, nicht wie es sein Profilverzeichnis liest.

Da WebDriver mit einer temporären Kopie arbeitet und diese nach Beendigung der Sitzung löscht, müssen Sie die Änderungen manuell im Profilmanager bearbeiten oder die Einstellungen im Code so konfigurieren, dass jeder Durchlauf vom gleichen, bekannten Zustand aus startet.

Nicht immer, aber es hilft. Das Profil anhängen an FirefoxOptions liefert die Einstellungen zusammen mit der Capabilities-Payload aus, sodass ein Remote-Knoten die gleichen Einstellungen für Download-Ordner, Proxy und Zertifikatsverwaltung anwendet wie Ihr lokaler Rechner.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: