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.







