Selenium Firefox Profil: Installationsguide
⚡ Smart sammanfattning
Firefox profilen lagrar bokmärken, lösenord, tillägg och inställningar som tillhör en webbläsaranvändare, och Selenium WebDriver kan ladda en dedikerad profil så att varje automatiserad körning startar från ett identiskt, förutsägbart webbläsartillstånd.

Selenium Firefox Profil
Firefox profil är samlingen av inställningar, anpassningar, tillägg och andra personaliseringsinställningar som kan göras på Firefox Browser. Du kan anpassa Firefox profil som passar din Selenium automatiseringskrav.
Också, Firefox eller någon annan webbläsare hanterar SSL-certifikatinställningarna. Så att automatisera dem är mycket vettigt tillsammans med testexekveringskoden.
Kort sagt är en profil en användares personliga inställningar. När du vill köra en pålitlig automatisering på en Firefox webbläsare rekommenderas det att skapa en separat profil. En dedikerad profil håller också dina dagliga webbläsardata borta från testkörningen, vilket är det första man bör utesluta när en Selenium Skriptet beter sig olika på två maskiner.
Plats för din profilmapp på disken
Firefox profilen är precis som olika användare använder Firefox. Firefox sparar personlig information som bokmärken, lösenord och användarinställningar som kan redigeras, raderas eller skapas med hjälp av profilhanteraren.
Skärmdumpen nedan visar en profilmapp som den visas på disken, namngiven efter profilen med ett slumpmässigt prefix.
Placeringen av profilen är som följer
- För Windows > C:\Användare\ \AppData\Roaming\Mozilla\Firefox\Profiler\profilnamn.standard
- För Linux > ~/.mozilla/firefox/profilnamn.standard/
- För Mac OS X > ~/Bibliotek/Programsupport/Firefox/Profiles/profile_name.default/
För att kunna köra en framgångsrik Selenium Testa, a Firefox profilen ska vara -
- Lätt att ladda
- Proxyinställningar vid behov
- Andra användarspecifika inställningar baserade på automatiseringsbehov
Hur man ställer in Firefox Profil för Selenium Tester
Låt oss se steg för steg hur man skapar en Firefox profil.
Steg 1) Stäng Firefox webbläsare
I första steget, stäng Firefox om den redan är öppen. Profilhanteraren startar inte medan en Firefox fönstret körs.
Steg 2) Öppna Kör (Windows tangent + R) och skriv firefox.exe –p
Dialogrutan Kör bör se ut som skärmdumpen nedan innan du trycker på OK.
Obs: Om den inte öppnas kan du prova att använda den fullständiga sökvägen inom citationstecken.
- På 32 bitar Windows: “C:\Programfiler\Mozilla Firefox"\firefox.exe" –p
- På 64 bitar Windows (32-bitars Firefox): “C:\Programfiler (x86)\Mozilla Firefox"\firefox.exe" –p
Steg 3) Välj användarprofil
Nu en dialogruta med namnet Firefox kommer att öppnas, som visas nedan.
Steg 4) Skapa profil
Välj alternativet Skapa profil som visas i nästa skärmbild för att starta guiden.
Välj nu alternativet Skapa profil i fönstret, så öppnas en guide. Klicka på nästa.
Steg 5) Ge ditt profilnamn
Skriv ett namn för automatiseringsprofilen i det markerade fältet nedan och avsluta guiden.
Nu är din profil klar, du kan välja din profil och öppna FirefoxHärifrån beter sig profilen som vilken annan webbläsarsession som helst, så en första WebDriver-skriptet kommer att kämpa emot det oförändrat.
Du kommer att märka att den nya Firefox fönstret visar inte några av dina bokmärken och favoritikoner.
Obs: Den senast valda profilen laddas automatiskt vid nästa Firefox lansera. Du måste starta om profilhanteraren om du vill ändra profiler.
Automation Script för Selenium
När profilen är skapad är nästa steg att ladda den från kod. För att komma åt den nyskapade profilen Firefox profil i en Selenium För att testa WebDriver-programvaran behöver vi använda WebDrivers inbyggda klass ProfilesIni och dess metod getProfile som visas nedan.
⚠️ Versionsinformation: utdragen i det här avsnittet är originalet Selenium 2-formulär. I nuvarande Selenium släpper ut klassens liv i org.openqa.selenium.firefox.ProfilesIni - Den .inre delpaketet släpptes — och profilen överlämnas till föraren via FirefoxAlternativ. Se FirefoxAlternativavsnittet nedan för den moderna motsvarigheten.
Selenium kod för profilen
Detta är en kod för att implementera en profil, som kan bäddas in i Selenium koda.
ProfilesIni profile = new ProfilesIni();
// detta kommer att skapa ett objekt för Firefox profil
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// detta kommer att initiera Firefox chaufför
WebDriver driver = new FirefoxDriver(myprofile)
Låt oss se implementeringen av denna kod i följande exempel.
Firefox Profilexempel 1
Det första exemplet laddar en profil efter namn. Skärmdumpen nedan visar samma skript i redigeraren.
// 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(); } }
Förklaring till koden
Nedan följer förklaringen av kod rad för rad.
- Code rad 2-7: Först och främst måste vi importera paketet som krävs för att köra Selenium koda.
- Code rad 8: Skapa en offentlig klass “FirefoxProfil."
- Code rad 9: Skapa ett objekt (du behöver ha grundläggande kunskaper om OOP-koncept).
- Code rad 10-11: Vi behöver initiera Firefox profil med objektet för minprofil.
- Code rad 13: Skapa objekt för Firefox.
- Code rad 15: Maximera fönstret.
- Code rad 17: driver.get används för att navigera till det givna URL.
- Code rad 19: Ange timeout används för att vänta en viss tid så att webbläsaren kan ladda sidan innan den fortsätter till nästa sida.
- Code rad 21: Stäng Firefox.
Låt oss se ytterligare ett exempel.
Firefox Profilexempel 2
Det andra exemplet hoppar över profiles.ini och pekar direkt på profilmappen, som redigerarens skärmdump visar.
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(); }
Förklaring till koden
Nedan följer förklaringen av kod rad för rad.
- Code rad 1-6: Först och främst måste vi importera paketet som krävs för att köra Selenium koda.
- Code rad 8: Skapa en offentlig klass FirefoxProfil2.
- Code rad 12: Skapa objektet myprofile genom att referera till den exakta sökvägen.
- Code rad 14: Skapa objekt för Firefox.
- Code rad 16: Maximera fönstret.
- Code rad 18: driver.get används för att navigera till det givna URL.
- Code rad 20: Ange timeout används för att vänta en viss tid så att webbläsaren kan ladda sidan innan den fortsätter till nästa sida.
- Code rad 22: Stäng Firefox.
Observera att sökvägen i det här kodavsnittet är skriven exakt som den ursprungliga handledningen visar. På en riktig maskin måste bakåtsnedstreck vara escape-tecken, till exempel “C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiler\\xyzProfile.standard”.
Hur man använder a Firefox Profil i Selenium 4 med FirefoxMontering
Båda exemplen ovan kompilerar endast mot Selenium 2. Två saker ändrades efteråt, och varje aktuell handledning använder den nyare formen.
- ProfilesIni flyttade ut ur inre underpaket, så importen är nu org.openqa.selenium.firefox.ProfilesIni.
- Ocuco-landskapet FirefoxFörare(FirefoxProfil)konstruktorn togs bort. Profilen är kopplad till en FirefoxOptions-objektet och options-objektet skickas till drivrutinen.
- Selenium 4 timeouts tar ett java.time.Duration-värde istället för ett värde plus en TimeUnit, så implicitlyWait(5, TimeUnit.SECONDS) blir implicitlyWait(Duration.ofSeconds(5)).
Tabellen nedan mappar varje äldre anrop till dess ersättning.
| Äldre samtal (Selenium 2) | Nuvarande samtal (Selenium 3 och 4) |
|---|---|
| importera org.openqa.selenium.firefox.internal.ProfilesIni; | importera org.openqa.selenium.firefox.ProfilesIni; |
| ny FirefoxFörare (min profil) | options.setProfile(minprofil); new FirefoxFörare (tillval) |
| implicitlyWait(5, TimeUnit.SECONDS) | implicitlyWait(Duration.ofSeconds(5)) |
| System.setProperty för geckodriver | Löst automatiskt av Selenium chef |
Omskrivet mot en aktuell utgåva, ser exempel 1 ut så här.
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(); } }
Själva profilsökningen är oförändrad: ProfilesIni läser fortfarande profiles.ini från Firefox application-data folder och getProfile returnerar fortfarande null när namnet inte matchar en profil, så en null-kontroll är värd att lägga till innan drivrutinen startar. Samma options-objekt bär också argumenten som används på andra ställen, till exempel de för maximera eller ändra storlek på webbläsarfönstret.
Hur man ställer in Firefox Profilinställningar i Selenium
En sparad profil är bara halva historien. De flesta automatiseringar kräver en handfull inställningar som tillämpas i kod så att samma beteende följer sviten på vilken maskin som helst. Metoden setPreference skriver dessa värden till profilkopian innan Firefox lanserar.
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);
Inställningarna nedan täcker de fall som förekommer oftast i det dagliga skriptarbetet.
| Företräde | Vad den kontrollerar |
|---|---|
| webbläsare.nedladdning.mapplista | Ställ in på 2 för att använda en anpassad nedladdningsmapp istället för systemets standardmapp. |
| webbläsare.nedladdning.dir | Den absoluta vägen Firefox sparar nedladdningar i. |
| browser.helperApps.neverAsk.saveToDisk | MIME-typer sparades utan att nedladdningsdialogrutan visades. |
| dom.webnotifications.aktiverade | Ställ in på falskt för att undertrycka push-aviseringar på webben. |
| intl.accept_languages | Accept-Language-headern, användbar för lokaliseringskörningar. |
| generell.useragent.override | Ersätter användaragentsträngen som skickas av webbläsaren. |
Två begränsningar är värda att känna till. Inställningar måste ställas in innan drivrutinen skapas, eftersom WebDriver kopierar profilen vid start och senare ändringar ignoreras. WebDriver reserverar också en liten uppsättning inställningar som behövs för att kommunicera med webbläsaren, och den skriver över dessa oavsett vad du tilldelar. Eftersom dessa värden finns i profilen snarare än i skriptet, överförs de också över en korsa webbläsartestning köras utan att ändra testkoden.
Gemensam Firefox Profilfel i Selenium och hur man fixar dem
Profilproblem uppstår vanligtvis som ett kompileringsfel eller som en webbläsare som öppnas med fel inställningar. Tabellen listar de fel som rapporteras oftast, tillsammans med orsaken till varje fel.
| Symptom | Orsak | Fast |
|---|---|---|
| Konstruktören FirefoxFörare(FirefoxProfil) är odefinierad | Konstruktören togs bort efter Selenium 2. | Linda in profilen FirefoxOptions och skicka options-objektet istället. |
| Kan inte lösa import org.openqa.selenium.firefox.internal.ProfilesIni | Klassen flyttade ut ur det interna delpaketet. | Importera org.openqa.selenium.firefox.ProfilesIni. |
| NullPointerException på getProfile | Profilnamnet matchar ingen post i profiles.ini. | Öppna profilhanteraren igen och kopiera namnet exakt, inklusive versaler och gemener. |
| Dina Firefox Profilen kan inte laddas. Den kan saknas eller vara oåtkomlig. | Annan Firefox instansen innehåller redan profilen, eller så är mappens sökväg fel. | Stäng varje Firefox fönstret och verifiera sedan sökvägen mot platserna som anges ovan. |
| En preferens har ingen effekt | Den ställdes in efter att drivrutinen startade, eller så reserverar WebDriver den. | Flytta varje setPreference-anrop ovanför FirefoxDrivrutinskonstruktör. |
Om webbläsaren startar korrekt men skriptet fortfarande misslyckas efteråt, är profilen förmodligen inte orsaken. undantagshantering i Selenium är vanligtvis den snabbaste vägen från den punkten.







