Selenium Firefox Profil: Vodič za postavljanje

⚡ Pametni sažetak

Firefox profil pohranjuje oznake, lozinke, dodatke i postavke koje pripadaju jednom korisniku preglednika i Selenium WebDriver može učitati namjenski profil tako da svako automatizirano pokretanje počinje iz identičnog, predvidljivog stanja preglednika.

  • 🔘 Osnove profila: A Firefox profil sadrži oznake, spremljene lozinke, dodatke, certifikate i postavke jednog korisnika u jednoj mapi.
  • ☑️ Lokacija profila: Windows, Linux i macOS svaka pohranjuje mape profila pod drugom putanjom unutar korisničkog direktorija.
  • ✅ Stvaranje profila: Ugrađeni upravitelj profila otvara se s firefox.exe -p i izrađuje čisti profil automatizacije u pet koraka.
  • 🧪 Code pristup: Klasa ProfilesIni čita datoteku profiles.ini, a getProfile vraća imenovani profil kao FirefoxObjekt profila.
  • 🛠️ Trenutna sintaksa: Selenium 3 i 4 provlače profil kroz FirefoxOptions.setProfile umjesto FirefoxKonstruktor vozača.
  • ⚠️ Prioriteti: setPreference kontrolira mapu za preuzimanje, obavijesti, jezik i rukovanje certifikatima prije pokretanja preglednika.

Selenium Firefox Vodič za postavljanje profila

Selenium Firefox Profil

Firefox profil je zbirka postavki, prilagodbi, dodataka i drugih postavki personalizacije koje se mogu izvršiti na Firefox Browser. Možete prilagoditi Firefox profil koji odgovara vašem Selenium zahtjev za automatizaciju.

Dakle, Firefox ili bilo koji drugi preglednik upravlja postavkama SSL certifikata. Stoga njihova automatizacija ima puno smisla zajedno s kodom za izvršavanje testa.

Ukratko, profil su osobne postavke korisnika. Kada želite pokrenuti pouzdan automatizacija na Firefox preglednik, preporučuje se izrada zasebnog profila. Namjenski profil također sprječava da vaši svakodnevni podaci o pregledavanju budu uključeni u testno izvođenje, što je prva stvar koju treba isključiti kada Selenium Skripta se ponaša različito na dva računala.

Lokacija mape vašeg profila na disku

Firefox profil je isti kao što ga koriste različiti korisnici Firefox. Firefox sprema osobne podatke poput oznaka, lozinki i korisničkih postavki koje se mogu uređivati, brisati ili kreirati pomoću upravitelja profila.

Snimka zaslona u nastavku prikazuje mapu profila kako se pojavljuje na disku, nazvanu po profilu sa slučajnim prefiksom.

Firefox mapa profila prikazana na disku sa svojim nasumičnim prefiksom

Lokacija profila je sljedeća

  • Za Windows > C:\Korisnici\ \AppData\Roaming\Mozilla\Firefox\Profili\naziv_profila.zadano
  • Za Linux > ~/.mozilla/firefox/naziv_profila.default/
  • Za Mac OS X > ~/Biblioteka/Podrška za aplikacije/Firefox/Profili/ime_profila.zadano/

Kako bi uspješno vodili Selenium Test, a Firefox profil bi trebao biti –

  • Jednostavan za učitavanje
  • Proxy postavke ako je potrebno
  • Ostale postavke specifične za korisnika temeljene na potrebama automatizacije

Kako postaviti Firefox Profil za Selenium Testovi

Pogledajmo korak po korak kako stvoriti Firefox profil.

Korak 1) Zatvori Firefox preglednik

U prvom koraku, zatvorite Firefox ako je već otvoren. Upravitelj profila neće se pokrenuti dok je Firefox prozor se pokreće.

Korak 2) Otvori Run (Windows tipka + R) i upišite firefox.exe –p

Dijalog Pokreni trebao bi izgledati kao na snimci zaslona ispod prije nego što pritisnete U redu.

Windows Pokrenite dijalog s upisanom naredbom firefox.exe -p

Napomena: Ako se ne otvori, možete pokušati koristiti punu putanju zatvorenu u navodnike.

  • Na 32-bitnoj verziji WindowsC:\Programske datoteke\Mozilla Firefox\firefox.exe” –p
  • Na 64-bitnoj verziji Windows (32-bitni Firefox): “C:\Programske datoteke (x86)\Mozilla Firefox\firefox.exe” –p

Korak 3) Odaberite korisnički profil

Sada, dijaloški okvir pod nazivom Firefox će se otvoriti, kao što je prikazano dolje.

Firefox Dijaloški okvir Odabir korisničkog profila s popisom postojećih profila

Korak 4) Izradite profil

Odaberite opciju Stvori profil prikazanu na sljedećoj snimci zaslona za pokretanje čarobnjaka.

Zaslon dobrodošlice čarobnjaka za stvaranje profila u Firefox upravitelj profila

Sada odaberite opciju Stvori profil iz prozora i otvorit će se čarobnjak. Kliknite na sljedeće.

Korak 5) Dajte ime svom profilu

Upišite naziv profila automatizacije u polje označeno ispod i dovršite čarobnjaka.

Ulazak u novi Firefox naziv profila u čarobnjaku za stvaranje profila

Sada je vaš profil spreman, možete odabrati svoj profil i otvoriti ga FirefoxOdavde se profil ponaša kao i bilo koja druga sesija preglednika, dakle prva WebDriver skripta će se protiv njega odvijati nepromijenjen.

Primijetit ćete da novi Firefox prozor neće prikazati nijednu od vaših oznaka i ikona favorita.

Napomena: Posljednji odabrani profil automatski će se učitati pri sljedećem Firefox lansirati. Morat ćete ponovno pokrenuti upravitelja profila ako želite promijeniti profile.

Skripta za automatizaciju Selenium

Nakon što je profil kreiran, sljedeći korak je učitavanje iz koda. Za pristup novokreiranom Firefox profil u Selenium Za testiranje softvera WebDriver, moramo koristiti ugrađenu klasu ProfilesIni u WebDriver i njezinu metodu getProfile kao što je prikazano dolje.

⚠️ Napomena o verziji: isječci u ovom odjeljku su originalni Selenium 2. obrazac. U trenutnom Selenium oslobađa klasu u kojoj živi org.openqa.selenium.firefox.ProfilesIni - .unutarnji podpaket je odbačen — i profil je predan upravljačkom programu putem FirefoxOpcije. Pogledajte FirefoxOdjeljak s opcijama u nastavku za moderni ekvivalent.

Selenium kod za profil

Ovo je kod za implementaciju profila, koji se može ugraditi u Selenium kodirati.

ProfilesIni profile = new ProfilesIni();

// ovo će stvoriti objekt za Firefox profil

FirefoxProfile myprofile = profile.getProfile("xyzProfile");

// ovo će inicijalizirati Firefox vozač

WebDriver driver = new FirefoxDriver(myprofile)

Pogledajmo implementaciju ovog koda u sljedećim primjerima.

Firefox Primjer profila 1

Prvi primjer učitava profil po imenu. Snimka zaslona u nastavku prikazuje isti skript unutar uređivača.

Firefox Primjer profila 1 skripta koja učitava profil po imenu u 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();
}

}

Objašnjenje koda

Ispod je objašnjenje koda redak po redak.

  • Code redak 2-7: Prvo moramo uvesti paket potreban za pokretanje Selenium kodirati.
  • Code redak 8: Napravite javnu klasu “FirefoxProfil."
  • Code redak 9: Napravite objekt (potrebno je imati osnovno znanje o konceptima OOP-a).
  • Code redak 10-11: Moramo inicijalizirati Firefox profil s objektom myprofile.
  • Code redak 13: Kreiraj objekt za Firefox.
  • Code redak 15: Maksimiziraj prozor.
  • Code redak 17: driver.get se koristi za navigaciju do zadanog URL.
  • Code redak 19: Postavljanje vremenskog ograničenja koristi se za čekanje određenog vremena kako bi preglednik mogao učitati stranicu prije prelaska na sljedeću stranicu.
  • Code redak 21: Zatvori Firefox.

Pogledajmo još jedan primjer.

Firefox Primjer profila 2

Drugi primjer preskače datoteku profiles.ini i izravno ukazuje na mapu profila, kao što je prikazano na snimci zaslona editora.

Firefox Primjer profila 2 skripta za pokazivanje FirefoxProfil na putanji mape

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();
    }

Objašnjenje koda

Ispod je objašnjenje koda redak po redak.

  • Code redak 1-6: Prvo moramo uvesti paket potreban za pokretanje Selenium kodirati.
  • Code redak 8: Napravite javnu klasu FirefoxProfil2.
  • Code redak 12: Napravite objekt myprofile pozivajući se na točnu putanju.
  • Code redak 14: Kreiraj objekt za Firefox.
  • Code redak 16: Maksimiziraj prozor.
  • Code redak 18: driver.get se koristi za navigaciju do zadanog URL.
  • Code redak 20: Postavljanje vremenskog ograničenja koristi se za čekanje određenog vremena kako bi preglednik mogao učitati stranicu prije prelaska na sljedeću stranicu.
  • Code redak 22: Zatvori Firefox.

Imajte na umu da je putanja u ovom isječku napisana točno onako kako je prikazano u izvornom vodiču. Na stvarnom računalu, obrnute kose crte moraju biti izbjegnute, na primjer “C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profili\\xyzProfil.default”.

Kako koristiti a Firefox Profil u Selenium 4 sa FirefoxOpcije

Oba gornja primjera kompiliraju se samo protiv Selenium 2. Dvije stvari su se nakon toga promijenile i svaki trenutni tutorial koristi noviji oblik.

  • ProfilesIni se iselio iz interni podpaket, pa je uvoz sada org.openqa.selenium.firefox.ProfilesIni.
  • The FirefoxVozač(FirefoxKonstruktor profila) je uklonjen. Profil je priložen uz FirefoxObjekt opcija i objekt opcija se prosljeđuje upravljačkom programu.
  • Selenium 4 timeouta uzimaju java.time.Duration umjesto vrijednosti plus TimeUnit, pa implicitlyWait(5, TimeUnit.SECONDS) postaje implicitlyWait(Duration.ofSeconds(5)).

Tablica u nastavku prikazuje svaki naslijeđeni poziv kao njegovu zamjenu.

Naslijeđeni poziv (Selenium 2) Trenutni poziv (Selenium 3 i 4)
import org.openqa.selenium.firefox.internal.ProfilesIni; import org.openqa.selenium.firefox.ProfilesIni;
novi FirefoxVozač (moj profil) opcije.postaviProfil(mojprofil); novo FirefoxVozač (opcije)
implicitnoČekaj(5, JedinicaVremena.SEKUNDE) implicitnoČekaj(Trajanje.sekundi(5))
System.setProperty za geckodriver Automatski riješeno od strane Selenium Voditelj

Prepisan u odnosu na trenutno izdanje, Primjer 1 izgleda ovako.

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 pretraživanje profila ostaje nepromijenjeno: ProfilesIni i dalje čita profiles.ini iz Firefox mapa podataka aplikacije i getProfile i dalje vraća null kada naziv ne odgovara profilu, stoga je vrijedno dodati provjeru null vrijednosti prije pokretanja upravljačkog programa. Isti objekt opcija također sadrži argumente koji se koriste drugdje, poput onih za maksimiziranje ili promjena veličine prozora preglednika.

Kako postaviti Firefox Postavke profila u Selenium

Spremljeni profil je samo pola priče. Većina automatizacije zahtijeva nekoliko postavki primijenjenih u kodu tako da se isto ponašanje primjenjuje na bilo kojem računalu. Metoda setPreference zapisuje te vrijednosti u kopiju profila prije Firefox pokreće.

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);

Donje postavke pokrivaju slučajeve koji se najčešće pojavljuju u svakodnevnom skriptiranju.

prednost Što kontrolira
preglednik.preuzimanje.popismapa Postavite na 2 za korištenje prilagođene mape za preuzimanje umjesto zadane sistemske postavke.
preglednik.preuzimanje.dir Apsolutni put Firefox sprema preuzimanja u .
browser.helperApps.neverAsk.saveToDisk MIME tipovi spremljeni bez prikaza dijaloga za preuzimanje.
dom.webnotifications.enabled Postavite na "false" kako biste potisnuli upite za web push obavijesti.
intl.accept_languages Zaglavlje Accept-Language, korisno za lokalizaciju.
općenito.korisnički.nadjačati Zamjenjuje niz korisničkog agenta koji šalje preglednik.

Vrijedi znati dva ograničenja. Postavke se moraju postaviti prije stvaranja upravljačkog programa jer WebDriver kopira profil prilikom pokretanja, a kasnije promjene se zanemaruju. WebDriver također rezervira mali skup postavki koje su mu potrebne za komunikaciju s preglednikom i prepisuje ih bez obzira na to što dodijelite. Budući da se te vrijednosti nalaze u profilu, a ne u skripti, one se također prenose... unakrsno ispitivanje preglednika pokrenuti bez ikakvih promjena u testnom kodu.

Zajednički Firefox Pogreške profila u Selenium i kako ih popraviti

Problemi s profilom obično se pojavljuju kao pogreška pri kompajliranju ili kao preglednik koji se otvara s pogrešnim postavkama. Tablica navodi najčešće prijavljene pogreške, zajedno s uzrocima svake od njih.

Simptom Izazvati Popraviti
Konstruktor FirefoxVozač(FirefoxProfil) nije definiran Konstruktor je uklonjen nakon Selenium 2. Zamotajte profil unutra FirefoxOpcije i umjesto toga proslijedite objekt opcija.
Nije moguće razriješiti uvoz org.openqa.selenium.firefox.internal.ProfilesIni Klasa se iselila iz internog podpaketa. Uvoz org.openqa.selenium.firefox.ProfilesIni.
NullPointerException na getProfile Naziv profila ne odgovara nijednom unosu u datoteci profiles.ini. Ponovno otvorite upravitelj profila i točno kopirajte ime, uključujući velika i mala slova.
Vaš Firefox Profil se ne može učitati. Možda nedostaje ili nije dostupan. Druga Firefox instanca već sadrži profil ili je putanja mape pogrešna. Zatvori svakih Firefox prozor, a zatim provjerite putanju u odnosu na gore navedene lokacije.
Preferencija nema učinka Postavljeno je nakon pokretanja upravljačkog programa ili ga WebDriver rezervira. Premjesti svaki poziv setPreference iznad FirefoxKonstruktor vozača.

Ako se preglednik ispravno pokrene, ali skripta i dalje ne uspijeva nakon toga, profil vjerojatno nije uzrok. Rješavanje problema obrada iznimki u Selenium je obično brži put od te točke.

Pitanja i odgovori

Ne. FirefoxDriver nikada ne uređuje postojeći profil. Kopira direktorij profila na privremenu lokaciju, primjenjuje postavke koje WebDriver zahtijeva i pokreće preglednik iz te kopije, tako da vaše spremljene oznake i lozinke ostaju netaknute.

Da. Svako proširenje instalirano u profilu učitava se s preglednikom. Također možete pozvati profile.addExtension(new File(“put/do/proširenja.xpi”)) da biste ga dodali tijekom izvođenja, što će profil na disku održavati čistim.

Python nema ekvivalent u ProfilesIni. Točka FirefoxProfil u direktoriju profila umjesto toga, a zatim ga dodijelite options.profile prije izgradnje upravljačkog programa. Selenium Python veze zatim kloniraju tu mapu točno kao Java radi.

Alati za testiranje potpomognuti umjetnom inteligencijom uspoređuju postavke zabilježene prilikom prolaska kroz testove s trenutnim profilom i pomakom oznaka, kao što je proxy ili mapa za preuzimanje koja se promijenila. Neki okviri također koriste strojno učenje kako bi uočili nestabilnosti povezane s profilom prije nego što izgradnja ne uspije.

GitHub kopilot brzo generira standardnu ​​verziju, ali često emitira uklonjeni FirefoxVozač(FirefoxKonstruktor profila) naučen iz starijeg koda. Uvijek potvrdite da prijedlog koristi FirefoxOptions.setProfile i trenutni paket prije njegovog potvrđivanja (commit-a).

Da. Pozovite options.addArguments("-headless") uz options.setProfile(profile). Profil pruža postavke i proširenja točno kao i prije, budući da headless način rada mijenja samo kako Firefox renderira, a ne kako čita svoj direktorij profila.

Jer WebDriver radi na privremenoj kopiji i briše je kada sesija završi. Da biste zadržali promjene, ručno uredite profil u upravitelju profila ili postavite postavke u kodu tako da svako pokretanje počinje iz istog poznatog stanja.

Ne uvijek, ali pomaže. Prilaganje profila na FirefoxOpcije isporučuju postavke s korisnim teretom mogućnosti, tako da udaljeni čvor primjenjuje istu mapu za preuzimanje, proxy i rukovanje certifikatima kao i vaše lokalno računalo.

Sažmite ovu objavu uz: