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: