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.

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.
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.
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.
Schritt 4) Profil erstellen
Wählen Sie die im nächsten Screenshot gezeigte Option „Profil erstellen“, um den Assistenten zu starten.
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.
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.
// 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.
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.







