Selenium Firefox Profil: Przewodnik konfiguracji
⚡ Inteligentne podsumowanie
Firefox profil przechowuje zakładki, hasła, dodatki i preferencje należące do jednego użytkownika przeglądarki, Selenium WebDriver może załadować dedykowany profil, dzięki czemu każde automatyczne uruchomienie będzie rozpoczynać się od identycznego, przewidywalnego stanu przeglądarki.

Selenium Firefox Profil
Firefox profil to zbiór ustawień, dostosowywania, dodatków i innych ustawień personalizacji, których można dokonać na stronie Firefox Browser. Możesz dostosować Firefox profil dostosowany do Twoich potrzeb Selenium wymóg automatyzacji.
Tak więc, Firefox lub dowolna inna przeglądarka obsługuje ustawienia certyfikatów SSL. Dlatego ich automatyzacja ma sens wraz z kodem wykonania testu.
Krótko mówiąc, profil to osobiste ustawienia użytkownika. Jeśli chcesz prowadzić niezawodną automatyzacja na Firefox W przypadku przeglądarki zaleca się utworzenie osobnego profilu. Dedykowany profil chroni również codzienne dane przeglądania przed testem, co jest pierwszą rzeczą, którą należy wykluczyć, gdy Selenium Skrypt zachowuje się inaczej na dwóch maszynach.
Lokalizacja folderu profilu na dysku
Firefox profil jest taki sam, z jakiego korzystają różni użytkownicy Firefox. Firefox zapisuje dane osobowe, takie jak zakładki, hasła i preferencje użytkownika, które można edytować, usuwać lub tworzyć za pomocą menedżera profili.
Poniższy zrzut ekranu pokazuje folder profilu, tak jak pojawia się on na dysku, nazwany tak jak profil, z losowym prefiksem.
Lokalizacja profilu jest następująca
- Dla litu szacuje się Windows > C:\Użytkownicy\ \AppData\Roaming\Mozilla\Firefox\Profiles\nazwa_profilu.domyślna
- Dla litu szacuje się Linux > ~/.mozilla/firefox/nazwa_profilu.default/
- W przypadku systemu Mac OS X > ~/Library/Application Support/Firefox/Profile/nazwa_profilu.default/
Aby odnieść sukces Selenium Próba, A Firefox profil powinien być –
- Łatwy do załadowania
- Ustawienia proxy, jeśli to konieczne
- Inne ustawienia specyficzne dla użytkownika w oparciu o potrzeby automatyzacji
Jak ustawić Firefox Profil dla Selenium Testy
Zobaczmy krok po kroku, jak utworzyć Firefox profil.
Krok 1) Zamknij Firefox przeglądarka
W pierwszym kroku zamknij Firefox jeśli jest już otwarty. Menedżer profili nie uruchomi się, gdy Firefox Okno jest uruchomione.
Krok 2) Otwarty bieg (Windows klawisz + R) i wpisz firefox.exe –p
Okno dialogowe Uruchom powinno wyglądać tak, jak na zrzucie ekranu poniżej, zanim naciśniesz OK.
Uwaga: Jeśli się nie otworzy, możesz spróbować wpisać pełną ścieżkę ujętą w cudzysłów.
- Na 32 bitach Windows: „C:\Pliki programów\Mozilla Firefox\firefox.exe” –p
- Na 64 bitach Windows (32-bitowy Firefox): „C:\Pliki programów (x86)\Mozilla Firefox\firefox.exe” –p
Krok 3) Wybierz profil użytkownika
Teraz pojawi się okno dialogowe o nazwie Firefox otworzy się tak jak pokazano poniżej.
Krok 4) Stworzyć profil
Aby uruchomić kreatora, wybierz opcję Utwórz profil, pokazaną na kolejnym zrzucie ekranu.
Teraz wybierz opcję Utwórz profil w oknie, a otworzy się kreator. Kliknij dalej.
Krok 5) Podaj nazwę swojego profilu
Wpisz nazwę profilu automatyzacji w polu podświetlonym poniżej i zakończ działanie kreatora.
Teraz Twój profil jest gotowy, możesz wybrać swój profil i otworzyć FirefoxOd tego momentu profil zachowuje się jak każda inna sesja przeglądarki, więc pierwszy skrypt WebDriver będzie z nim konkurować bez zmian.
Zauważysz, że nowy Firefox oknie nie będą wyświetlane żadne ikony zakładek ani ulubionych.
Uwaga: Ostatnio wybrany profil zostanie automatycznie załadowany przy następnym uruchomieniu. Firefox początek. Jeśli chcesz zmienić profile, będziesz musiał ponownie uruchomić menedżera profili.
Skrypt automatyzacji dla Selenium
Po utworzeniu profilu kolejnym krokiem jest załadowanie go z kodu. Aby uzyskać dostęp do nowo utworzonego profilu, Firefox profil w Selenium Do przetestowania oprogramowania WebDriver należy użyć wbudowanej klasy ProfilesIni WebDriver i jej metody getProfile, jak pokazano poniżej.
⚠️ Uwaga dotycząca wersji: fragmenty w tej sekcji są oryginalne Selenium 2 forma. W chwili obecnej Selenium uwalnia klasę, w której mieszka org.openqa.selenium.firefox.ProfilesIni - .wewnętrzny podpakiet został usunięty — a profil jest przekazywany kierowcy przez FirefoxOpcje. Zobacz FirefoxPoniżej znajdziesz sekcję opcji dla współczesnego odpowiednika.
Selenium kod do profilu
To kod umożliwiający wdrożenie profilu, który można osadzić w Selenium kod.
ProfilesIni profile = new ProfilesIni();
// spowoduje to utworzenie obiektu dla Firefox profil
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// to zainicjuje Firefox kierowca
WebDriver driver = new FirefoxDriver(myprofile)
Zobaczmy implementację tego kodu w poniższych przykładach.
Firefox Przykład profilu 1
Pierwszy przykład wczytuje profil po nazwie. Poniższy zrzut ekranu pokazuje ten sam skrypt w edytorze.
// 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(); } }
Wyjaśnienie kodu
Poniżej znajduje się wyjaśnienie kodu linia po linii.
- Code wiersz 2-7: Przede wszystkim musimy zaimportować pakiet wymagany do uruchomienia Selenium kod.
- Code wiersz 8: Utwórz klasę publiczną „FirefoxProfil."
- Code wiersz 9: Utwórz obiekt (musisz mieć podstawową wiedzę na temat koncepcji OOP).
- Code wiersz 10-11: Musimy zainicjować Firefox profil z obiektem myprofile.
- Code wiersz 13: Utwórz obiekt dla Firefox.
- Code wiersz 15: Maksymalizuj okno.
- Code linia 17: driver.get służy do nawigacji do podanego URL.
- Code wiersz 19: Ustaw limit czasu, aby odczekać jakiś czas, zanim przeglądarka załaduje stronę przed przejściem do następnej strony.
- Code linia 21: Zamknij Firefox.
Przyjrzyjmy się jeszcze jednemu przykładowi.
Firefox Przykład profilu 2
W drugim przykładzie pominięto plik profiles.ini i wskazano bezpośrednio folder profilu, jak pokazano na zrzucie ekranu edytora.
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(); }
Wyjaśnienie kodu
Poniżej znajduje się wyjaśnienie kodu linia po linii.
- Code wiersz 1-6: Przede wszystkim musimy zaimportować pakiet wymagany do uruchomienia Selenium kod.
- Code wiersz 8: Utwórz klasę publiczną FirefoxProfil 2.
- Code wiersz 12: Utwórz obiekt myprofile odwołując się do dokładnej ścieżki.
- Code wiersz 14: Utwórz obiekt dla Firefox.
- Code wiersz 16: Maksymalizuj okno.
- Code linia 18: driver.get służy do nawigacji do podanego URL.
- Code wiersz 20: Ustaw limit czasu, aby odczekać jakiś czas, zanim przeglądarka załaduje stronę przed przejściem do następnej strony.
- Code linia 22: Zamknij Firefox.
Zwróć uwagę, że ścieżka w tym fragmencie kodu jest zapisana dokładnie tak, jak pokazano w oryginalnym samouczku. Na prawdziwym komputerze ukośniki odwrotne muszą być poprzedzone sekwencją ucieczki, na przykład „C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profile\\xyzProfile.default”.
Jak korzystać z Firefox Profil w Selenium 4 z FirefoxOpcje
Oba powyższe przykłady kompilują się tylko w stosunku do Selenium 2. Później nastąpiły dwie zmiany i każdy obecny samouczek używa nowszego formularza.
- ProfileIni wyprowadził się z wewnętrzny podpakiet, więc teraz import to org.openqa.selenium.firefox.ProfilesIni.
- FirefoxKierowca(FirefoxKonstruktor profilu został usunięty. Profil jest dołączony do FirefoxObiekt opcji i obiekt opcji przekazywany jest do sterownika.
- Selenium 4 limity czasu przyjmują wartość java.time.Duration zamiast wartości i TimeUnit, więc implicitlyWait(5, TimeUnit.SECONDS) staje się implicitlyWait(Duration.ofSeconds(5)).
Poniższa tabela mapuje każde starsze wywołanie do jego zamiennika.
| Wywołanie starszej wersji (Selenium 2) | Aktualne połączenie (Selenium 3 i 4) |
|---|---|
| import org.openqa.selenium.firefox.internal.ProfilesIni; | import org.openqa.selenium.firefox.ProfilesIni; |
| nowych FirefoxKierowca (mój profil) | opcje.setProfile(myprofile); nowy FirefoxSterownik (opcje) |
| domyślnieWait(5, TimeUnit.SECONDS) | domyślnieWait(Duration.ofSeconds(5)) |
| System.setProperty dla geckodriver | Rozwiązane automatycznie przez Selenium Menedżer |
Przykład 1, przepisany na potrzeby bieżącej wersji, wygląda następująco.
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(); } }
Samo wyszukiwanie profilu pozostaje niezmienione: ProfilesIni nadal odczytuje profiles.ini z Firefox Folder danych aplikacji i getProfile nadal zwracają null, gdy nazwa nie pasuje do profilu, dlatego warto dodać sprawdzanie null przed uruchomieniem sterownika. Ten sam obiekt opcji zawiera również argumenty używane w innych miejscach, na przykład dla maksymalizowanie lub zmienianie rozmiaru okna przeglądarki.
Jak ustawić Firefox Preferencje profilu w Selenium
Zapisany profil to tylko połowa sukcesu. Większość automatyzacji wymaga zastosowania kilku preferencji w kodzie, aby to samo zachowanie było zgodne z pakietem na dowolnej maszynie. Metoda setPreference zapisuje te wartości w kopii profilu przed… Firefox uruchamia.
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);
Preferencje poniżej obejmują przypadki najczęściej występujące w codziennym pisaniu skryptów.
| Preferencja | Co kontroluje |
|---|---|
| przeglądarka.pobierz.listafolderów | Ustaw na 2, aby użyć niestandardowego folderu pobierania zamiast domyślnego folderu systemowego. |
| przeglądarka.pobierz.katalog | Ścieżka absolutna Firefox zapisuje pobrane pliki do. |
| przeglądarka.helperApps.neverAsk.saveToDisk | Typy MIME zostały zapisane bez wyświetlania okna dialogowego pobierania. |
| dom.webnotifications.enabled | Ustaw na false, aby wyłączyć powiadomienia push w sieci. |
| międzynarodowe_akceptowane_języki | Nagłówek Accept-Language, przydatny przy uruchamianiu lokalizacji. |
| nadpisanie.ogólnego.useragenta | Zastępuje ciąg agenta użytkownika wysyłany przez przeglądarkę. |
Warto znać dwa ograniczenia. Preferencje muszą zostać ustawione przed utworzeniem sterownika, ponieważ WebDriver kopiuje profil podczas uruchamiania, a późniejsze zmiany są ignorowane. WebDriver rezerwuje również niewielki zestaw preferencji potrzebnych do komunikacji z przeglądarką i nadpisuje je, niezależnie od tego, co przypiszesz. Ponieważ te wartości znajdują się w profilu, a nie w skrypcie, są one również przenoszone. testowanie między przeglądarkami uruchom bez żadnych zmian w kodzie testowym.
wspólny Firefox Błędy profilu w Selenium i jak je naprawić
Problemy z profilem zazwyczaj objawiają się błędem kompilacji lub otwarciem przeglądarki z nieprawidłowymi ustawieniami. W tabeli wymieniono najczęściej zgłaszane błędy wraz z ich przyczynami.
| Objaw | Spowodować | Fix |
|---|---|---|
| Konstruktor FirefoxKierowca(FirefoxProfil) jest niezdefiniowany | Konstruktor został usunięty po Selenium 2. | Zawiń profil w FirefoxOpcje i zamiast tego przekaż obiekt opcji. |
| Nie można rozwiązać importu org.openqa.selenium.firefox.internal.ProfilesIni | Klasa wyszła z wewnętrznego podpakietu. | Importuj org.openqa.selenium.firefox.ProfilesIni. |
| Wyjątek NullPointerException w getProfile | Nazwa profilu nie pasuje do żadnego wpisu w pliku profiles.ini. | Otwórz ponownie menedżera profili i skopiuj dokładnie nazwę, uwzględniając wielkość liter. |
| Twoje Firefox Nie można załadować profilu. Być może jest on nieobecny lub niedostępny. | Inne Firefox Instancja już zawiera profil lub ścieżka do folderu jest nieprawidłowa. | Zamknij każdy Firefox okno, a następnie sprawdź ścieżkę na podstawie lokalizacji wymienionych powyżej. |
| Preferencja nie ma wpływu | Zostało ustawione po uruchomieniu sterownika lub WebDriver je zarezerwował. | Przenieś każde wywołanie setPreference powyżej FirefoxKonstruktor sterownika. |
Jeśli przeglądarka uruchamia się poprawnie, ale skrypt nadal nie działa, przyczyną prawdopodobnie nie jest profil. obsługa wyjątków w Selenium jest zazwyczaj szybszą trasą z tego punktu.







