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.

  • ๐Ÿ”˜ Grunderna i profilen: A Firefox En profil innehรฅller en anvรคndares bokmรคrken, sparade lรถsenord, tillรคgg, certifikat och instรคllningar i en enda mapp.
  • โ˜‘๏ธ Profilplats: Windows, Linux och macOS Varje profilmapp lagras under en annan sรถkvรคg i anvรคndarkatalogen.
  • โœ… Profilskapande: Den inbyggda profilhanteraren รถppnas med firefox.exe -p och bygger en ren automatiseringsprofil i fem steg.
  • ๐Ÿงช Code tillgรฅng: Klassen ProfilesIni lรคser profiles.ini och getProfile returnerar den namngivna profilen som en FirefoxProfilobjekt.
  • ๐Ÿ› ๏ธ Nuvarande syntax: Selenium 3 och 4 passerar profilen igenom FirefoxOptions.setProfile snarare รคn FirefoxDrivrutinskonstruktรถr.
  • โš ๏ธ Instรคllningar: setPreference styr nedladdningsmappen, aviseringar, sprรฅk och certifikathantering innan webblรคsaren startas.

Selenium Firefox Guide fรถr profilinstallation

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.

Firefox profilmapp som visas pรฅ disken med dess slumpmรคssiga 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.

Windows Kรถr dialogrutan med kommandot firefox.exe -p inskrivet

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.

Firefox Dialogrutan Vรคlj anvรคndarprofil med en lista รถver befintliga profiler

Steg 4) Skapa profil

Vรคlj alternativet Skapa profil som visas i nรคsta skรคrmbild fรถr att starta guiden.

Vรคlkomstskรคrmen fรถr guiden Skapa profil i Firefox profilhanterare

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.

Att ange ett nytt Firefox profilnamn i guiden Skapa profil

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.

Firefox Profilexempel 1-skript som laddar en profil efter namn 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.

Firefox Profilexempel 2 skriptpekning FirefoxProfil vid en mappsรถkvรคg

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.

Vanliga frรฅgor

Nej. FirefoxDrivrutinen redigerar aldrig en befintlig profil. Den kopierar profilkatalogen till en tillfรคllig plats, tillรคmpar de instรคllningar som WebDriver krรคver och startar webblรคsaren frรฅn den kopian, sรฅ att dina sparade bokmรคrken och lรถsenord fรถrblir orรถrda.

Ja. Alla tillรคgg som installeras i profilen laddas med webblรคsaren. Du kan ocksรฅ anropa profile.addExtension(new File("path/to/extension.xpi")) fรถr att koppla ett tillรคgg vid kรถrning, vilket hรฅller profilen pรฅ disken ren.

Python har ingen motsvarighet till ProfilesIni. FirefoxProfile i profilkatalogen istรคllet, tilldela den sedan till options.profile innan du skapar drivrutinen. Selenium Python bindningar klonar sedan den mappen exakt som Java gรถr.

AI-assisterade testverktyg jรคmfรถr de preferenser som registrerats vid godkรคnda kรถrningar med den aktuella profilen och flaggar avvikelser, till exempel en proxy eller nedladdningsmapp som รคndrats. Vissa ramverk anvรคnder ocksรฅ maskininlรคrning fรถr att upptรคcka profilrelaterade flรคckar innan en build misslyckas.

GitHub Copilot genererar standardtemat snabbt, men den avger ofta den borttagna FirefoxFรถrare(FirefoxProfile)-konstruktorn lรคrd frรฅn รคldre kod. Bekrรคfta alltid fรถrslaget anvรคnder FirefoxOptions.setProfile och det aktuella paketet innan det laddas upp.

Ja. Anropa options.addArguments("-headless") tillsammans med options.setProfile(profile). Profilen tillhandahรฅller instรคllningar och tillรคgg exakt som tidigare, eftersom headless-lรคget bara รคndrar hur Firefox renderar, inte hur den lรคser sin profilkatalog.

Eftersom WebDriver arbetar med en tillfรคllig kopia och tar bort den nรคr sessionen avslutas. Fรถr att behรฅlla รคndringarna, redigera profilen manuellt i profilhanteraren eller ange instรคllningarna i kod sรฅ att varje kรถrning startar frรฅn samma kรคnda tillstรฅnd.

Inte alltid, men det hjรคlper. Koppla profilen till FirefoxOptions levererar instรคllningarna med nyttolasten capabilities, sรฅ en fjรคrrnod tillรคmpar samma nedladdningsmapp, proxy och certifikathantering som din lokala maskin.

Sammanfatta detta inlรคgg med: