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.
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.
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.
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.
Pas 4) Creeaza un profil
Selectați opțiunea Creare profil afișată în captura de ecran următoare pentru a porni expertul.
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.
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.
// 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.
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.







