Selenium Firefox Profilo: Guida all'installazione
⚡ Riepilogo intelligente
Firefox il profilo memorizza i segnalibri, le password, i componenti aggiuntivi e le preferenze che appartengono a un utente del browser e Selenium WebDriver può caricare un profilo dedicato in modo che ogni esecuzione automatizzata inizi da uno stato del browser identico e prevedibile.
Selenium Firefox Profile
Firefox profile è la raccolta di impostazioni, personalizzazioni, componenti aggiuntivi e altre impostazioni di personalizzazione che possono essere eseguite su Firefox Browser. Puoi personalizzare Firefox profilo adatto al tuo Selenium requisito di automazione.
Inoltre Firefox o qualsiasi altro browser gestisce le impostazioni dei certificati SSL. Quindi automatizzarli ha molto senso insieme al codice di esecuzione del test.
In breve, un profilo è l'insieme delle impostazioni personali di un utente. Quando si desidera eseguire un processo affidabile automazione su una Firefox browser, si consiglia di creare un profilo separato. Un profilo dedicato mantiene inoltre i dati di navigazione quotidiani fuori dal test, che è la prima cosa da escludere quando un Selenium Lo script si comporta in modo diverso su due macchine.
Posizione della cartella del profilo nel disco
Firefox profile è proprio come i diversi utenti che utilizzano Firefox. Firefox Salva informazioni personali come segnalibri, password e preferenze utente, che possono essere modificate, eliminate o create tramite il gestore del profilo.
Lo screenshot qui sotto mostra una cartella del profilo così come appare sul disco, denominata con il nome del profilo e un prefisso casuale.
La posizione del profilo è la seguente
- Per Windows > C:\Utenti\ \AppData\Roaming\Mozilla\Firefox\Profili\nome_profilo.default
- Per Linux > ~/.mozilla/firefox/profile_name.default/
- Per Mac OS X > ~/Library/Application Support/Firefox/Profili/nome_profilo.default/
Per eseguire un successo Selenium Prova, A Firefox il profilo dovrebbe essere –
- Facile da caricare
- Impostazioni proxy, se necessario
- Altre impostazioni specifiche dell'utente in base alle esigenze di automazione
Come impostare Firefox Profilo per Selenium Test
Vediamo passo passo come creare un Firefox profilo.
Passo 1) Chiudi il Firefox del browser
Nel primo passo, chiudere Firefox se è già aperto. Il gestore del profilo non si avvierà finché è aperto Firefox La finestra è in esecuzione.
Passo 2) Apri corsa (Windows tasto + R) e digitare firefox.exe –p
Prima di premere OK, la finestra di dialogo Esegui dovrebbe apparire come nello screenshot qui sotto.
Nota: se non si apre, puoi provare a utilizzare il percorso completo racchiuso tra virgolette.
- Su 32 bit Windows: “C:\Program Files\Mozilla Firefox\\firefox.exe” –p
- Su 64 bit Windows (32 bit Firefox): “C:\Program Files (x86)\Mozilla Firefox\\firefox.exe” –p
Passo 3) Scegli il profilo utente
Ora, una finestra di dialogo denominata Firefox si aprirà, come mostrato di seguito.
Passo 4) Crea il tuo profilo
Seleziona l'opzione Crea profilo mostrata nella schermata successiva per avviare la procedura guidata.
Ora seleziona l'opzione Crea profilo dalla finestra e si aprirà una procedura guidata. Fare clic su Avanti.
Passo 5) Dai il nome del tuo profilo
Inserisci un nome per il profilo di automazione nel campo evidenziato qui sotto e completa la procedura guidata.
Ora il tuo profilo è pronto, puoi selezionare il tuo profilo e aprirlo Firefox. Da qui il profilo si comporta come qualsiasi altra sessione del browser, quindi un primo script WebDriver verrà eseguito senza modifiche.
Noterai che il nuovo Firefox la finestra non mostrerà nessuno dei segnalibri e delle icone dei preferiti.
Nota: l'ultimo profilo selezionato verrà caricato automaticamente al prossimo Firefox lancio. Sarà necessario riavviare il gestore profili se desideri modificare i profili.
Script di automazione per Selenium
Una volta creato il profilo, il passo successivo è caricarlo dal codice. Per accedere al profilo appena creato Firefox profilo in un Selenium Per testare il software WebDriver, dobbiamo utilizzare la classe integrata ProfilesIni di WebDriver e il suo metodo getProfile, come mostrato di seguito.
⚠️ Nota sulla versione: i frammenti in questa sezione sono gli originali Selenium 2 modulo. Nell'attuale Selenium rilascia la classe vive in org.openqa.selenium.firefox.ProfilesIni - Il .interno Il sotto-pacchetto è stato eliminato e il profilo viene consegnato al driver tramite FirefoxOpzioni. Vedi le FirefoxNella sezione Opzioni qui sotto trovate l'equivalente moderno.
Selenium codice per il profilo
Questo è un codice per implementare un profilo, che può essere incorporato nel Selenium codice.
ProfilesIni profile = new ProfilesIni();
// questo creerà un oggetto per il Firefox tuo profilo
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// questo inizializzerà il file Firefox autista
WebDriver driver = new FirefoxDriver(myprofile)
Vediamo l'implementazione di questo codice nei seguenti esempi.
Firefox Esempio di profilo 1
Il primo esempio carica un profilo in base al nome. Lo screenshot qui sotto mostra lo stesso script all'interno dell'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(); } }
Spiegazione del codice
Di seguito è riportata la spiegazione del codice riga per riga.
- Code riga 2-7: Prima di tutto dobbiamo importare il pacchetto necessario per eseguire il Selenium codice.
- Code riga 8: Crea una classe pubblica “FirefoxProfilo."
- Code riga 9: Crea un oggetto (è necessaria una conoscenza di base dei concetti di programmazione orientata agli oggetti).
- Code riga 10-11: Dobbiamo inizializzare Firefox profilo con l'oggetto myprofile.
- Code riga 13: Crea oggetto per Firefox.
- Code riga 15: Ingrandisci la finestra.
- Code riga 17: driver.get viene utilizzato per navigare verso il dato URL.
- Code riga 19: Il timeout impostato viene utilizzato per attendere un certo periodo di tempo affinché il browser possa caricare la pagina prima di procedere alla pagina successiva.
- Code riga 21: Chiudi Firefox.
Vediamo un altro esempio.
Firefox Esempio di profilo 2
Il secondo esempio ignora il file profiles.ini e punta direttamente alla cartella del profilo, come mostrato nello screenshot dell'editor.
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(); }
Spiegazione del codice
Di seguito è riportata la spiegazione del codice riga per riga.
- Code riga 1-6: Prima di tutto dobbiamo importare il pacchetto necessario per eseguire il Selenium codice.
- Code riga 8: Crea una classe pubblica FirefoxProfilo2.
- Code riga 12: Crea l'oggetto di myprofile facendo riferimento al percorso esatto.
- Code riga 14: Crea oggetto per Firefox.
- Code riga 16: Ingrandisci la finestra.
- Code riga 18: driver.get viene utilizzato per navigare verso il dato URL.
- Code riga 20: Il timeout impostato viene utilizzato per attendere un certo periodo di tempo affinché il browser possa caricare la pagina prima di procedere alla pagina successiva.
- Code riga 22: Chiudi Firefox.
Nota che il percorso in questo frammento è scritto esattamente come mostrato nel tutorial originale. Su una macchina reale le barre rovesciate devono essere precedute da un carattere di escape, ad esempio "C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profili\\xyzProfile.default”.
Come usare a Firefox profili in Selenium 4 con FirefoxOpzioni
Entrambi gli esempi sopra compilano solo contro Selenium 2. Due cose sono cambiate in seguito, e tutti i tutorial attuali utilizzano la versione più recente.
- ProfilesIni si è trasferito fuori dal interno sottoprogramma, quindi l'importazione ora è org.openqa.selenium.firefox.ProfilesIni.
- Migliori FirefoxAutista(FirefoxIl costruttore Profile) è stato rimosso. Il profilo è collegato a un FirefoxL'oggetto Opzioni viene passato al driver.
- Selenium 4 timeout accettano un java.time.Duration invece di un valore più un TimeUnit, quindi implicitlyWait(5, TimeUnit.SECONDS) diventa implicitlyWait(Duration.ofSeconds(5)).
La tabella seguente associa ciascuna chiamata legacy alla sua sostituzione.
| Chiamata legacy (Selenium 2) | Chiamata corrente (Selenium 3 e 4) |
|---|---|
| import org.openqa.selenium.firefox.internal.ProfilesIni; | import org.openqa.selenium.firefox.ProfilesIni; |
| new FirefoxAutista (il mio profilo) | opzioni.setProfile(myprofile); nuovo FirefoxDriver (opzioni) |
| implicitlyWait(5, TimeUnit.SECONDS) | implicitlyWait(Duration.ofSeconds(5)) |
| System.setProperty per geckodriver | Risolto automaticamente da Selenium direttore |
Riscritto in base a una versione corrente, l'Esempio 1 si presenta così.
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(); } }
La ricerca del profilo in sé non è cambiata: ProfilesIni legge ancora profiles.ini da Firefox cartella application-data e getProfile restituisce ancora null quando il nome non corrisponde a un profilo, quindi vale la pena aggiungere un controllo null prima dell'avvio del driver. Lo stesso oggetto opzioni contiene anche gli argomenti utilizzati altrove, come quelli per ingrandire o ridimensionare la finestra del browser.
Come impostare Firefox Preferenze del profilo in Selenium
Un profilo salvato è solo metà della storia. La maggior parte dell'automazione richiede che alcune preferenze vengano applicate nel codice in modo che lo stesso comportamento segua la suite su qualsiasi macchina. Il metodo setPreference scrive questi valori nella copia del profilo prima Firefox lancia.
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);
Le preferenze riportate di seguito coprono i casi che si presentano più frequentemente nella programmazione quotidiana.
| preferenza | Cosa controlla |
|---|---|
| browser.download.folderList | Imposta il valore su 2 per utilizzare una cartella di download personalizzata anziché quella predefinita del sistema. |
| browser.download.dir | Il percorso assoluto Firefox salva i download in. |
| browser.helperApps.neverAsk.saveToDisk | Tipi MIME salvati senza visualizzare la finestra di dialogo di download. |
| dom.webnotifications.abilitato | Imposta su false per sopprimere le notifiche push web. |
| intl.accept_languages | L'intestazione Accept-Language, utile per le esecuzioni di localizzazione. |
| general.userage.override | Sostituisce la stringa user agent inviata dal browser. |
Due limiti è importante conoscerli. Le preferenze devono essere impostate prima della creazione del driver, perché WebDriver copia il profilo all'avvio e le modifiche successive vengono ignorate. WebDriver riserva anche un piccolo set di preferenze necessarie per comunicare con il browser e le sovrascrive indipendentemente da ciò che viene assegnato. Poiché questi valori risiedono nel profilo anziché nello script, vengono anche trasferiti test su più browser eseguire senza apportare alcuna modifica al codice di test.
Uncommon Firefox Errori del profilo in Selenium e come risolverli
I problemi del profilo si manifestano solitamente come un errore di compilazione o come un browser che si apre con impostazioni errate. La tabella elenca gli errori segnalati più frequentemente, insieme alle cause di ciascuno.
| Sintomo | Causare | Fissare |
|---|---|---|
| Il costruttore FirefoxAutista(FirefoxProfilo) non è definito | Il costruttore è stato rimosso dopo Selenium 2. | Avvolgere il profilo in FirefoxOpzioni e passa invece l'oggetto opzioni. |
| Impossibile risolvere l'importazione org.openqa.selenium.firefox.internal.ProfilesIni | La classe è stata spostata fuori dal sottocartella interna. | Importa org.openqa.selenium.firefox.ProfilesIni. |
| NullPointerException su getProfile | Il nome del profilo non corrisponde a nessuna voce presente nel file profiles.ini. | Riapri il gestore dei profili e copia il nome esattamente, rispettando le maiuscole e le minuscole. |
| Firefox Impossibile caricare il profilo. Potrebbe essere mancante o inaccessibile. | Un altro Firefox L'istanza contiene già il profilo oppure il percorso della cartella non è corretto. | Chiudi ogni Firefox nella finestra, quindi verificare il percorso confrontandolo con le posizioni elencate sopra. |
| Una preferenza non ha effetto | È stato impostato dopo l'avvio del driver, oppure WebDriver lo riserva. | Sposta ogni chiamata setPreference sopra FirefoxCostruttore del driver. |
Se il browser si avvia correttamente ma lo script continua a fallire in seguito, il profilo probabilmente non è la causa. Lavorando attraverso gestione delle eccezioni in Selenium Di solito è il percorso più veloce da quel punto.







