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.

  • 🔘 Základy profilu: A Firefox Profil uchovává záložky, uložená hesla, doplňky, certifikáty a předvolby jednoho uživatele v jedné složce.
  • ☑️ Umístění profilu: Windows, Linux a macOS každé ukládá složky profilu pod jinou cestou v adresáři uživatele.
  • (Tj. Vytvoření profilu: Vestavěný správce profilů se otevře příkazem firefox.exe -p a v pěti krocích vytvoří čistý profil automatizace.
  • 🧪 Code přístup: Třída ProfilesIni čte soubor profiles.ini a metoda getProfile vrací pojmenovaný profil jako FirefoxObjekt profilu.
  • 🛠️ Aktuální syntaxe: Selenium 3 a 4 provlékněte profil skrz FirefoxOptions.setProfile spíše než FirefoxKonstruktor ovladače.
  • ⚠️ Předvolby: setPreference řídí složku pro stahování, oznámení, jazyk a zpracování certifikátů před spuštěním prohlížeče.

Selenium Firefox Průvodce nastavením profilu

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.

Firefox složka profilu zobrazená na disku 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.

Windows Spusťte dialogové okno s příkazem firefox.exe -p zadaným v

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.

Firefox Dialogové okno Vybrat profil uživatele se seznamem existujících profilů

Krok 4) Vytvořit profil

Vyberte možnost Vytvořit profil zobrazenou na dalším snímku obrazovky a spusťte průvodce.

Úvodní obrazovka Průvodce vytvořením profilu v Firefox správce profilů

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.

Vstup do nového Firefox název profilu v Průvodci vytvořením profilu

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.

Firefox Příklad profilu 1 skript načítání profilu podle názvu v 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.

Firefox Příklad profilu 2 skript ukazující FirefoxProfil v cestě ke složce

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.

Nejčastější dotazy

Ne. FirefoxDriver nikdy neupravuje již existující profil. Zkopíruje adresář profilu do dočasného umístění, použije nastavení, která WebDriver vyžaduje, a spustí prohlížeč z této kopie, takže vaše uložené záložky a hesla zůstanou nedotčené.

Ano. Jakékoli rozšíření nainstalované v profilu se načte s prohlížečem. Můžete také zavolat profile.addExtension(new File(“cesta/k/rozšíření.xpi”)) a připojit ho za běhu, čímž se profil na disku udrží čistý.

Python nemá ekvivalent ProfilesIni. Bod FirefoxProfil v adresáři profilů a poté jej před sestavením ovladače přiřaďte souboru options.profile. Selenium Python vazby pak naklonují tuto složku přesně tak, jak Java ano.

Testovací nástroje s podporou umělé inteligence porovnávají preference zaznamenané při úspěšných bězích s aktuálním profilem a posunem příznaků, jako je například změněný proxy server nebo složka pro stahování. Některé frameworky také používají strojové učení k odhalení nestability související s profilem dříve, než selže při sestavení.

GitHub Copilot generuje standardizovanou verzi rychle, ale často vydává odstraněnou FirefoxŘidič(FirefoxKonstruktor profilu) naučený ze staršího kódu. Vždy ověřte, zda návrh používá FirefoxOptions.setProfile a aktuální balíček před jeho potvrzením (commitem).

Ano. Volejte options.addArguments(“-headless”) spolu s options.setProfile(profile). Profil poskytuje předvolby a rozšíření přesně jako předtím, protože režim headless mění pouze způsob, jakým Firefox vykresluje, nikoli jak čte svůj adresář profilu.

Protože WebDriver pracuje s dočasnou kopií a po ukončení relace ji odstraní. Chcete-li zachovat změny, upravte profil ručně ve správci profilů nebo nastavte předvolby v kódu tak, aby každé spuštění začínalo ze stejného známého stavu.

Ne vždycky, ale pomáhá to. Připojení profilu k FirefoxMožnosti dodávají předvolby s datovou částí funkcí, takže vzdálený uzel používá stejnou složku pro stahování, proxy a certifikáty jako váš lokální počítač.

Shrňte tento příspěvek takto: