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.







