Selenium Firefox Profil: Ghid de configurare

⚡ Rezumat inteligent

Firefox profilul stochează marcajele, parolele, extensiile și preferințele care aparțin unui utilizator de browser și Selenium WebDriver poate încărca un profil dedicat, astfel încât fiecare rulare automată să înceapă dintr-o stare identică și previzibilă a browserului.

  • 🔘 Noțiuni de bază despre profil: A Firefox Profilul conține marcajele, parolele salvate, suplimentele, certificatele și preferințele unui utilizator într-un singur folder.
  • ☑️ Locația profilului: Windows, Linux și macOS fiecare stochează folderele de profil sub o cale diferită în directorul utilizatorului.
  • ✅ Crearea profilului: Managerul de profil încorporat se deschide cu comanda firefox.exe -p și creează un profil de automatizare curat în cinci pași.
  • 🧪 Code acces: Clasa ProfilesIni citește profiles.ini, iar getProfile returnează profilul numit ca FirefoxObiect de profil.
  • 🛠️ Sintaxa curentă: Selenium 3 și 4 trec prin profil FirefoxOptions.setProfile în loc de FirefoxConstructor de drivere.
  • ⚠️ Preferințe: setPreference controlează folderul de descărcare, notificările, limba și gestionarea certificatelor înainte de lansarea browserului.

Selenium Firefox Ghid de configurare a profilului

Selenium Firefox Profil

Firefox profil este o colecție de setări, personalizare, suplimente și alte setări de personalizare care pot fi făcute pe Firefox Browser. Puteți personaliza Firefox profil pentru a vă potrivi Selenium cerința de automatizare.

De asemenea, Firefox sau orice alt browser se ocupă de setările certificatelor SSL. Așadar, automatizarea lor are foarte mult sens împreună cu codul de execuție a testului.

Pe scurt, un profil reprezintă setările personale ale unui utilizator. Când doriți să rulați un profil fiabil automatizare pe o Firefox browser, se recomandă crearea unui profil separat. Un profil dedicat exclude, de asemenea, datele de navigare zilnică din test, acesta fiind primul lucru de exclus atunci când un Selenium Scriptul se comportă diferit pe două mașini.

Locația folderului de profil pe disc

Firefox profilul este exact ca pe diferiți utilizatori Firefox. Firefox salvează informații personale precum marcaje, parole și preferințe utilizator, care pot fi editate, șterse sau create folosind managerul de profiluri.

Captura de ecran de mai jos prezintă un folder de profil așa cum apare pe disc, denumit după profil cu un prefix aleatoriu.

Firefox folderul de profil afișat pe disc cu prefixul său aleatoriu

Locația profilului este după cum urmează

  • Pentru Windows > C:\Utilizatori\ \AppData\Roaming\Mozilla\Firefox\Profiles\nume_profil.implicit
  • Pentru Linux > ~/.mozilla/firefox/nume_profil.implicit/
  • Pentru Mac OS X > ~/Bibliotecă/Asistență aplicații/Firefox/Profiles/profile_name.default/

Pentru a rula un succes Selenium Test, a Firefox profilul ar trebui să fie -

  • Ușor de încărcat
  • Setări proxy dacă este necesar
  • Alte setări specifice utilizatorului bazate pe nevoile de automatizare

Cum să setați Firefox Profil pentru Selenium Teste

Să vedem pas cu pas cum se creează un Firefox profil.

Pas 1) Inchide Firefox browser-ul

În primul pas, închideți Firefox dacă este deja deschis. Managerul de profil nu va porni în timp ce Firefox fereastra rulează.

Pas 2) Deschide Run (Windows tasta + R) și tastați firefox.exe –p

Caseta de dialog Executare ar trebui să arate ca în captura de ecran de mai jos înainte de a apăsa OK.

Windows Rulați dialogul cu comanda firefox.exe -p tastată

Notă: Dacă nu se deschide, puteți încerca să utilizați calea completă între ghilimele.

  • Pe 32 de biți Windows„C:\Program Files\Mozilla Firefox„\firefox.exe” –p
  • Pe 64 de biți Windows (32 de biți Firefox): „C:\Program Files (x86)\Mozilla Firefox„\firefox.exe” –p

Pas 3) Alegeți profilul utilizatorului

Acum, o casetă de dialog numită Firefox se va deschide, așa cum se arată mai jos.

Firefox Caseta de dialog Alegeți profilul utilizatorului care listează profilurile existente

Pas 4) Creeaza un profil

Selectați opțiunea Creare profil afișată în captura de ecran următoare pentru a porni expertul.

Ecranul de bun venit al Asistentului de creare a profilului din Firefox manager de profil

Acum, selectați opțiunea Creare profil din fereastră și se va deschide un expert. Faceți clic pe următorul.

Pas 5) Dați numele profilului dvs

Introduceți un nume pentru profilul de automatizare în câmpul evidențiat mai jos și finalizați expertul.

Introducerea unui nou Firefox nume de profil în Asistentul de creare a profilului

Acum profilul dvs. este gata, vă puteți selecta profilul și deschide FirefoxDe aici, profilul se comportă ca orice altă sesiune de browser, deci a primul script WebDriver va rula împotriva acestuia neschimbat.

Veți observa că noul Firefox fereastra nu va afișa niciunul dintre marcajele și pictogramele favorite.

Notă: Ultimul profil selectat se va încărca automat la următoarea Firefox lansa. Va trebui să reporniți managerul de profil dacă doriți să schimbați profilurile.

Script de automatizare pentru Selenium

Odată ce profilul este creat, următorul pas este să îl încărcați din cod. Pentru a accesa profilul nou creat Firefox profil într-un Selenium Pentru testarea software-ului WebDriver, trebuie să folosim clasa ProfilesIni încorporată a WebDriver și metoda sa getProfile, așa cum se arată mai jos.

⚠️ Notă privind versiunea: Fragmentele din această secțiune sunt originale Selenium Formularul 2. În prezent Selenium eliberează clasa în care trăiește org.openqa.selenium.firefox.ProfilesIni - .intern subpachetul a fost abandonat — iar profilul este predat șoferului prin FirefoxOpțiuni. Consultați FirefoxSecțiunea de opțiuni de mai jos pentru echivalentul modern.

Selenium cod pentru profil

Acesta este un cod pentru implementarea unui profil, care poate fi încorporat în Selenium cod.

ProfilesIni profile = new ProfilesIni();

// aceasta va crea un obiect pentru Firefox profil

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

// aceasta va inițializa Firefox şofer

WebDriver driver = new FirefoxDriver(myprofile)

Să vedem implementarea acestui cod în exemplele următoare.

Firefox Exemplu de profil 1

Primul exemplu încarcă un profil după nume. Captura de ecran de mai jos prezintă același script în editor.

Firefox Exemplu de profil 1 script care încarcă un profil după nume în editor

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

}

Explicație pentru cod

Mai jos este explicația codului linie cu linie.

  • Code linia 2-7: Mai întâi trebuie să importăm pachetul necesar pentru a rula Selenium cod.
  • Code linia 8: Creați o clasă publică „FirefoxProfil."
  • Code linia 9: Creați un obiect (trebuie să aveți cunoștințe de bază despre conceptele de POO).
  • Code linia 10-11: Trebuie să inițializăm Firefox profil cu obiectul profilul_meu.
  • Code linia 13: Creați obiect pentru Firefox.
  • Code linia 15: Maximizare fereastră.
  • Code linia 17: driver.get este folosit pentru a naviga la locația dată URL.
  • Code linia 19: Setarea timeout-ului este utilizată pentru a aștepta un timp, astfel încât browserul să poată încărca pagina înainte de a trece la pagina următoare.
  • Code linia 21: Închidere Firefox.

Să mai vedem un exemplu.

Firefox Exemplu de profil 2

Al doilea exemplu omite profiles.ini și indică direct folderul profilului, așa cum arată captura de ecran a editorului.

Firefox Exemplu de profil 2, script de indicare FirefoxProfil la o cale de folder

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

Explicație pentru cod

Mai jos este explicația codului linie cu linie.

  • Code linia 1-6: Mai întâi trebuie să importăm pachetul necesar pentru a rula Selenium cod.
  • Code linia 8: Creați o clasă publică FirefoxProfil2.
  • Code linia 12: Creați obiectul profilului meu referindu-vă la calea exactă.
  • Code linia 14: Creați obiect pentru Firefox.
  • Code linia 16: Maximizare fereastră.
  • Code linia 18: driver.get este folosit pentru a naviga la locația dată URL.
  • Code linia 20: Setarea timeout-ului este utilizată pentru a aștepta un timp, astfel încât browserul să poată încărca pagina înainte de a trece la pagina următoare.
  • Code linia 22: Închidere Firefox.

Rețineți că calea din acest fragment este scrisă exact așa cum este prezentată în tutorialul original. Pe o mașină reală, barele oblice inversate trebuie să fie introduse prin escape, de exemplu „C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xyzProfile.default”.

Cum se utilizează a Firefox Profil în Selenium 4 cu FirefoxOpţiuni

Ambele exemple de mai sus se compilează doar împotriva Selenium 2. Două lucruri s-au schimbat ulterior, iar fiecare tutorial actual folosește forma mai nouă.

  • ProfilesIni s-a mutat din intern sub-pachet, deci importul este acum org.openqa.selenium.firefox.ProfilesIni.
  • FirefoxȘofer (FirefoxConstructorul Profile) a fost eliminat. Profilul este atașat la un FirefoxObiectul Options, iar obiectul options este transmis driverului.
  • Selenium 4 timeout-uri acceptă un java.time.Duration în loc de o valoare plus un TimeUnit, deci implicitlyWait(5, TimeUnit.SECONDS) devine implicitlyWait(Duration.ofSeconds(5)).

Tabelul de mai jos mapează fiecare apel vechi cu înlocuitorul său.

Apel vechi (Selenium 2) Apel curent (Selenium 3 și 4)
importă org.openqa.selenium.firefox.internal.ProfilesIni; importă org.openqa.selenium.firefox.ProfilesIni;
nou FirefoxȘofer (profilul meu) opțiuni.setProfile(profilulmeu); nou FirefoxȘofer (opțiuni)
implicitWait(5, TimeUnit.SECONDS) implicitWait(Durata.deSecunde(5))
Proprietatea System.set pentru geckodriver Rezolvat automat de Selenium Manager

Rescris pentru o versiune curentă, Exemplul 1 arată astfel.

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

Căutarea profilului în sine este neschimbată: ProfilesIni citește în continuare profiles.ini din Firefox folderul application-data și getProfile returnează în continuare null atunci când numele nu se potrivește cu un profil, așa că merită adăugată o verificare null înainte de pornirea driverului. Același obiect de opțiuni conține și argumentele utilizate în altă parte, cum ar fi cele pentru maximizarea sau redimensionarea ferestrei browserului.

Cum să setați Firefox Preferințe profil în Selenium

Un profil salvat este doar jumătate din poveste. Majoritatea automatizărilor necesită o serie de preferințe aplicate în cod, astfel încât același comportament să fie aplicat suitei pe orice mașină. Metoda setPreference scrie aceste valori în copia profilului înainte Firefox lanseaza.

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

Preferințele de mai jos acoperă cazurile care apar cel mai des în scripting-ul zilnic.

Preferinţă Ceea ce controlează
browser.download.folderList Setați la 2 pentru a utiliza un folder de descărcare personalizat în loc de cel implicit al sistemului.
browser.download.dir Calea absolută Firefox salvează descărcările în.
browser.helperApps.neverAsk.saveToDisk Tipurile MIME au fost salvate fără a afișa caseta de dialog pentru descărcare.
dom.notificări web.activate Setați la fals pentru a suprima notificările push web.
intl.accept_languages Antetul Accept-Language, util pentru rularea localizării.
general.useragent.override Înlocuiește șirul de caractere al agentului utilizator trimis de browser.

Două limite merită cunoscute. Preferințele trebuie setate înainte de crearea driverului, deoarece WebDriver copiază profilul la lansare, iar modificările ulterioare sunt ignorate. WebDriver își rezervă, de asemenea, un set mic de preferințe de care are nevoie pentru a comunica cu browserul și le suprascrie pe cele atribuite. Deoarece aceste valori se află în profil și nu în script, ele sunt transmise și mai departe. testare cross browser rulează fără nicio modificare a codului de test.

Comun Firefox Erori de profil în Selenium și Cum să le remediați

Problemele legate de profil apar de obicei ca o eroare de compilare sau ca un browser care se deschide cu setări greșite. Tabelul listează erorile raportate cel mai des, împreună cu cauzele fiecăreia.

Simptom Provoca Repara
Constructorul FirefoxȘofer (FirefoxProfilul) este nedefinit Constructorul a fost înlăturat după Selenium 2. Înfășurați profilul în FirefoxOpțiuni și transmiteți în schimb obiectul opțiuni.
Nu se poate rezolva importul org.openqa.selenium.firefox.internal.ProfilesIni Clasa a ieșit din subpachetul intern. Importă fișierul org.openqa.selenium.firefox.ProfilesIni.
NullPointerException pe getProfile Numele profilului nu corespunde cu nicio intrare din profiles.ini. Redeschideți managerul de profiluri și copiați numele exact, inclusiv majuscule/minuscule.
Ta Firefox Profilul nu poate fi încărcat. Este posibil să lipsească sau să fie inaccesibil. O alta Firefox instanța conține deja profilul sau calea folderului este greșită. Închideți fiecare Firefox fereastră, apoi verificați calea în raport cu locațiile enumerate mai sus.
O preferință nu are niciun efect A fost setată după pornirea driverului sau WebDriver o rezervă. Mută ​​fiecare apel setPreference deasupra FirefoxConstructor de drivere.

Dacă browserul pornește corect, dar scriptul tot eșuează ulterior, probabil că profilul nu este cauza. gestionarea excepțiilor în Selenium este de obicei ruta mai rapidă din acel punct.

Întrebări frecvente

Nu. FirefoxDriverul nu editează niciodată un profil preexistent. Copiază directorul profilului într-o locație temporară, aplică preferințele necesare WebDriver și lansează browserul din acea copie, astfel încât marcajele și parolele salvate să rămână neatinse.

Da. Orice extensie instalată în profil se încarcă odată cu browserul. De asemenea, puteți apela profile.addExtension(new File(“path/to/extension.xpi”)) pentru a atașa una la momentul execuției, ceea ce menține profilul de pe disc curat.

Python nu are echivalent ProfilesIni. Point FirefoxProfilul din directorul de profil, apoi atribuiți-l la options.profile înainte de a construi driverul. Selenium Python legăturile clonează apoi acel folder exact așa cum Java nu.

Instrumentele de testare asistate de inteligență artificială compară preferințele capturate la rulările reușite cu profilul curent și cu deviațiile de semnalizare, cum ar fi un proxy sau un folder de descărcare care s-a modificat. Unele framework-uri folosesc, de asemenea, învățarea automată pentru a detecta instabilitățile legate de profil înainte ca acesta să eșueze la compilare.

Copilotul GitHub generează rapid șablonul standard, dar adesea emite elementele eliminate FirefoxȘofer (FirefoxConstructorul Profile) învățat din cod mai vechi. Confirmați întotdeauna că sugestia folosește FirefoxOptions.setProfile și pachetul curent înainte de a-l valida.

Da. Apelați options.addArguments(„-headless”) împreună cu options.setProfile(profile). Profilul furnizează preferințe și extensii exact ca înainte, deoarece modul headless modifică doar modul în care Firefox randează, nu cum citește directorul profilului său.

Deoarece WebDriver lucrează pe o copie temporară și o șterge la sfârșitul sesiunii. Pentru a păstra modificările, editați profilul manual în managerul de profiluri sau setați preferințele în cod, astfel încât fiecare rulare să înceapă din aceeași stare cunoscută.

Nu întotdeauna, dar ajută. Atașarea profilului la FirefoxOpțiunile livrează preferințele împreună cu sarcina utilă a capabilităților, astfel încât un nod la distanță aplică același folder de descărcări, proxy și gestionare a certificatelor ca și mașina locală.

Rezumați această postare cu: