Selenium Firefox Profil: Průvodce nastavením
⚡ Chytré shrnutí
Firefox profil ukládá záložky, hesla, doplňky a předvolby, které patří jednomu uživateli prohlížeče, a Selenium WebDriver dokáže načíst vyhrazený profil, takže každé automatizované spuštění začíná z identického, předvídatelného stavu prohlížeče.
Selenium Firefox Změna hesla
Firefox profil je sbírka nastavení, přizpůsobení, doplňků a dalších nastavení přizpůsobení, která lze provést na Firefox Browser. Můžete přizpůsobit Firefox profil, který vám bude vyhovovat Selenium požadavek na automatizaci.
Takže, Firefox nebo jakýkoli jiný prohlížeč zpracovává nastavení certifikátů SSL. Jejich automatizace má tedy velký smysl spolu s kódem pro provedení testu.
Stručně řečeno, profil je osobní nastavení uživatele. Pokud chcete provozovat spolehlivý automatizace na Firefox prohlížeči se doporučuje vytvořit samostatný profil. Vyhrazený profil také chrání vaše každodenní data o prohlížení před testováním, což je první věc, kterou je třeba vyloučit při Selenium Skript se na dvou počítačích chová odlišně.
Umístění složky vašeho profilu na disku
Firefox profil je stejný jako u různých uživatelů Firefox. Firefox ukládá osobní údaje, jako jsou záložky, hesla a uživatelské preference, které lze upravovat, mazat nebo vytvářet pomocí správce profilů.
Níže uvedený snímek obrazovky ukazuje složku profilu tak, jak se zobrazuje na disku, pojmenovanou podle profilu s náhodnou předponou.
Umístění profilu je následující
- Pro Windows > C:\Uživatelé\ \AppData\Roaming\Mozilla\Firefox\Profily\název_profilu.default
- Pro Linux > ~/.mozilla/firefox/název_profilu.default/
- Pro Mac OS X > ~/Knihovna/Podpora aplikací/Firefox/Profily/název_profilu.default/
Aby bylo možné úspěšně spustit Selenium Test, a Firefox profil by měl být -
- Snadné naložení
- V případě potřeby nastavení proxy
- Další uživatelsky specifická nastavení podle potřeb automatizace
Jak nastavit Firefox Profil pro Selenium Zkoušky
Podívejme se krok za krokem, jak vytvořit Firefox profil.
Krok 1) Zavři Firefox prohlížeč
V prvním kroku uzavřete Firefox pokud je již otevřený. Správce profilů se nespustí, pokud je Firefox okno běží.
Krok 2) Otevřít Spustit (Windows klávesa + R) a zadejte firefox.exe –p
Dialogové okno Spustit by mělo před stisknutím tlačítka OK vypadat jako na snímku obrazovky níže.
Poznámka: Pokud se neotevře, můžete zkusit použít celou cestu uzavřenou v uvozovkách.
- Na 32 bitech Windows„C:\Program Files\Mozilla“ Firefox"\firefox.exe" –p
- Na 64 bitech Windows (32bitový Firefox): „C:\Program Files (x86)\Mozilla Firefox"\firefox.exe" –p
Krok 3) Vyberte uživatelský profil
Nyní se zobrazí dialogové okno s názvem Firefox se otevře, jak je znázorněno níže.
Krok 4) Vytvořit profil
Vyberte možnost Vytvořit profil zobrazenou na dalším snímku obrazovky a spusťte průvodce.
Nyní v okně vyberte možnost Vytvořit profil a otevře se průvodce. Klikněte na další.
Krok 5) Uveďte jméno svého profilu
Do níže zvýrazněného pole zadejte název profilu automatizace a dokončete průvodce.
Nyní je váš profil připraven, můžete jej vybrat a otevřít FirefoxOdtud se profil chová jako jakákoli jiná relace prohlížeče, takže první skript WebDriveru poběží proti němu beze změny.
Všimnete si, že nový Firefox okno nezobrazí žádné z vašich ikon záložek a oblíbených položek.
Poznámka: Poslední vybraný profil se automaticky načte při dalším Firefox zahájení. Pokud chcete změnit profily, budete muset restartovat správce profilů.
Automatizační skript pro Selenium
Po vytvoření profilu je dalším krokem jeho načtení z kódu. Pro přístup k nově vytvořenému Firefox profil v Selenium Pro testování softwaru WebDriver musíme použít vestavěnou třídu ProfilesIni z WebDriveru a její metodu getProfile, jak je znázorněno níže.
⚠️ Poznámka k verzi: úryvky v této části jsou originální Selenium 2. forma. V současné době Selenium uvolňuje, ve kterém třída žije org.openqa.selenium.firefox.ProfilesIni - .vnitřní podbalíček byl odstraněn – a profil je předán ovladači prostřednictvím FirefoxMožnosti. Viz FirefoxSekce možností níže pro moderní ekvivalent.
Selenium kód pro profil
Toto je kód pro implementaci profilu, který lze vložit do Selenium kód.
ProfilesIni profile = new ProfilesIni();
// tím se vytvoří objekt pro Firefox profil
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// tím se inicializuje Firefox řidič
WebDriver driver = new FirefoxDriver(myprofile)
Podívejme se na implementaci tohoto kódu v následujících příkladech.
Firefox Příklad profilu 1
První příklad načte profil podle názvu. Snímek obrazovky níže ukazuje stejný skript uvnitř editoru.
// 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(); } }
Vysvětlení kódu
Níže je vysvětlení kódu řádek po řádku.
- Code řádek 2-7: Nejprve musíme importovat balíček potřebný ke spuštění Selenium kód.
- Code řádek 8: Vytvořte veřejnou třídu „FirefoxProfil."
- Code řádek 9: Vytvořte objekt (musíte mít základní znalosti konceptů objektově orientovaného programování).
- Code řádek 10-11: Musíme inicializovat Firefox profil s objektem myprofile.
- Code řádek 13: Vytvořit objekt pro Firefox.
- Code řádek 15: Maximalizovat okno.
- Code řádek 17: driver.get se používá k navigaci k danému URL.
- Code řádek 19: Nastavení časového limitu se používá k čekání, aby prohlížeč mohl načíst stránku před pokračováním na další stránku.
- Code řádek 21: Zavřít Firefox.
Podívejme se ještě na jeden příklad.
Firefox Příklad profilu 2
Druhý příklad přeskakuje soubor profiles.ini a ukazuje přímo na složku profilu, jak ukazuje snímek obrazovky editoru.
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(); }
Vysvětlení kódu
Níže je vysvětlení kódu řádek po řádku.
- Code řádek 1-6: Nejprve musíme importovat balíček potřebný ke spuštění Selenium kód.
- Code řádek 8: Vytvořte veřejnou třídu FirefoxProfil2.
- Code řádek 12: Vytvořte objekt myprofile odkazem na přesnou cestu.
- Code řádek 14: Vytvořit objekt pro Firefox.
- Code řádek 16: Maximalizovat okno.
- Code řádek 18: driver.get se používá k navigaci k danému URL.
- Code řádek 20: Nastavení časového limitu se používá k čekání, aby prohlížeč mohl načíst stránku před pokračováním na další stránku.
- Code řádek 22: Zavřít Firefox.
Všimněte si, že cesta v tomto úryvku je napsána přesně tak, jak ji ukazuje původní tutoriál. Na skutečném počítači musí být zpětná lomítka escapována, například „C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profily\\xyzProfil.default”.
Jak používat Firefox Profily na Selenium 4 s Firefoxmožnosti
Oba výše uvedené příklady se kompilují pouze proti Selenium 2. Poté se změnily dvě věci a každý aktuální tutoriál používá novější formu.
- ProfilesIni se odstěhoval z interní podbalíček, takže import je nyní org.openqa.selenium.firefox.ProfilesIni.
- Jedno FirefoxŘidič(FirefoxKonstruktor Profile) byl odstraněn. Profil je připojen k FirefoxObjekt Options a objekt options je předán ovladači.
- Selenium 4 časové limity berou java.time.Duration místo hodnoty plus TimeUnit, takže implicitlyWait(5, TimeUnit.SECONDS) se implicitlyWait(Duration.ofSeconds(5)).
Níže uvedená tabulka mapuje každé volání starší verze s jeho náhradou.
| Starší hovor (Selenium 2) | Aktuální hovor (Selenium 3 a 4) |
|---|---|
| import org.openqa.selenium.firefox.internal.ProfilesIni; | import org.openqa.selenium.firefox.ProfilesIni; |
| nový FirefoxŘidič (můj profil) | možnosti.setProfile(můjprofil); nový FirefoxOvladač (volitelné) |
| implicitněČekání(5, ČasováJednotka.SEKONDY) | implicitněČekání(Duration.ofSeconds(5)) |
| System.setProperty pro geckodriver | Automaticky vyřešeno uživatelem Selenium Manažer |
Přepsaný proti aktuální verzi, Příklad 1 vypadá takto.
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(); } }
Samotné vyhledávání profilu se nezměnilo: ProfilesIni stále čte soubor profiles.ini ze souboru Firefox složku application-data a getProfile stále vrací hodnotu null, pokud název neodpovídá profilu, takže před spuštěním ovladače se vyplatí přidat kontrolu na hodnotu null. Stejný objekt options obsahuje také argumenty použité jinde, například ty pro maximalizace nebo změna velikosti okna prohlížeče.
Jak nastavit Firefox Předvolby profilu v Selenium
Uložený profil je jen polovina příběhu. Většina automatizace vyžaduje několik preferencí aplikovaných v kódu, takže stejné chování se bude chovat na jakémkoli počítači. Metoda setPreference zapíše tyto hodnoty do kopie profilu předtím, než... Firefox spouští.
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);
Níže uvedené preference pokrývají případy, které se nejčastěji vyskytují při každodenním skriptování.
| Přednost | Co ovládá |
|---|---|
| prohlížeč.download.folderList | Nastavením na hodnotu 2 použijete vlastní složku pro stahování místo výchozí systémové složky. |
| prohlížeč.download.dir | Absolutní cesta Firefox ukládá stažené soubory do. |
| browser.helperApps.neverAsk.saveToDisk | Typy MIME uložené bez zobrazení dialogového okna pro stahování. |
| dom.webnotifications.enabled | Nastavením na hodnotu false potlačíte zobrazování webových push notifikací. |
| intl.accept_languages | Záhlaví Accept-Language, užitečné pro běhy lokalizace. |
| generál.uživatel. přepsat | Nahradí řetězec uživatelského agenta odeslaný prohlížečem. |
Je dobré znát dvě omezení. Před vytvořením ovladače je nutné nastavit předvolby, protože WebDriver zkopíruje profil při spuštění a pozdější změny jsou ignorovány. WebDriver si také rezervuje malou sadu předvoleb, které potřebuje pro komunikaci s prohlížečem, a přepíše je bez ohledu na to, co přiřadíte. Protože tyto hodnoty jsou uloženy v profilu, nikoli ve skriptu, přenášejí se také přes... testování mezi prohlížeči spustit bez jakékoli změny testovacího kódu.
Společný Firefox Chyby profilu v Selenium a jak je opravit
Problémy s profilem se obvykle projevují jako chyba kompilace nebo jako prohlížeč, který se otevírá s nesprávným nastavením. Tabulka uvádí nejčastěji hlášené chyby spolu s jejich příčinami.
| Příznak | Způsobit | Opravit |
|---|---|---|
| Konstruktor FirefoxŘidič(FirefoxProfil) není definován | Konstruktor byl odstraněn po Selenium 2. | Zabalte profil dovnitř FirefoxMožnosti a místo toho předejte objekt možností. |
| Nelze vyřešit import org.openqa.selenium.firefox.internal.ProfilesIni | Třída se přesunula z interního podbalíčku. | Importovat soubor org.openqa.selenium.firefox.ProfilesIni. |
| NullPointerException na getProfile | Název profilu neodpovídá žádné položce v souboru profiles.ini. | Znovu otevřete správce profilů a zkopírujte jméno přesně, včetně velkých a malých písmen. |
| váš Firefox Profil nelze načíst. Možná chybí nebo není přístupný. | Další Firefox Instance již profil obsahuje nebo je cesta ke složce nesprávná. | Zavřete každých Firefox okno a poté ověřte cestu oproti výše uvedeným umístěním. |
| Preference nemá žádný vliv | Bylo nastaveno po spuštění ovladače nebo si ho WebDriver rezervuje. | Přesunout každé volání setPreference nad FirefoxKonstruktor ovladače. |
Pokud se prohlížeč spustí správně, ale skript i poté selže, profil pravděpodobně není příčinou. zpracování výjimek v Selenium je obvykle rychlejší trasa z daného bodu.







