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.
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.
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.
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.
Korak 4) Izradite profil
Odaberite opciju Stvori profil prikazanu na sljedećoj snimci zaslona za pokretanje čarobnjaka.
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.
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.
// 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.
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.







