Selenium Firefox Profil : Guide de configuration
⚡ Résumé intelligent
Firefox Le profil stocke les favoris, les mots de passe, les modules complémentaires et les préférences appartenant à un utilisateur de navigateur, et Selenium WebDriver peut charger un profil dédié afin que chaque exécution automatisée démarre à partir d'un état de navigateur identique et prévisible.

Selenium Firefox profil
Firefox Le profil est l'ensemble des paramètres, personnalisations, modules complémentaires et autres paramètres de personnalisation qui peuvent être effectués sur le Firefox Browser. Vous pouvez personnaliser Firefox profil adapté à votre Selenium exigence d'automatisation.
Aussi, les Firefox ou tout autre navigateur gère les paramètres des certificats SSL. Leur automatisation est donc tout à fait logique, tout comme le code d'exécution des tests.
En bref, un profil correspond aux paramètres personnels d'un utilisateur. Lorsque vous souhaitez exécuter un système fiable l'automatisation sur un Firefox Dans ce navigateur, il est recommandé de créer un profil distinct. Un profil dédié permet également de préserver vos données de navigation quotidiennes lors des tests, ce qui constitue la première chose à vérifier lors d'un test. Selenium Le script se comporte différemment sur les deux machines.
Emplacement de votre dossier de profil sur le disque
Firefox le profil est comme les différents utilisateurs utilisant Firefox. Firefox Enregistre les informations personnelles telles que les favoris, les mots de passe et les préférences de l'utilisateur, qui peuvent être modifiées, supprimées ou créées à l'aide du gestionnaire de profil.
La capture d'écran ci-dessous montre un dossier de profil tel qu'il apparaît sur le disque, nommé d'après le profil avec un préfixe aléatoire.
L'emplacement du profil est le suivant
- Pour Windows > C:\Utilisateurs\ \AppData\Roaming\Mozilla\Firefox\Profils\nom_du_profil.par_défaut
- Pour Linux > ~/.mozilla/firefox/nom_du_profil.default/
- Pour Mac OS X > ~/Bibliothèque/Application Support/Firefox/Profils/nom_profil.default/
Afin de mener à bien une Selenium Test, un Firefox le profil devrait être –
- Facile à charger
- Paramètres proxy si nécessaire
- Autres paramètres spécifiques à l'utilisateur basés sur les besoins d'automatisation
Comment régler Firefox Profil pour Selenium Tests
Voyons étape par étape comment créer un Firefox profil.
Étape 1) Fermer la Firefox navigateur
Dans un premier temps, fermez Firefox si elle est déjà ouverte. Le gestionnaire de profils ne démarrera pas tant qu'une Firefox La fenêtre est en cours d'exécution.
Étape 2) Ouvrir l'exécution (Windows touche + R) et tapez firefox.exe –p
La boîte de dialogue Exécuter devrait ressembler à la capture d'écran ci-dessous avant que vous n'appuyiez sur OK.
Remarque : Si le fichier ne s'ouvre pas, vous pouvez essayer d'utiliser le chemin complet entre guillemets.
- Sur 32 bits Windows: « C:\Program Files\Mozilla » Firefox\firefox.exe” –p
- Sur 64 bits Windows (32 bits Firefox): « C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p
Étape 3) Choisir le profil utilisateur
Maintenant, une boîte de dialogue nommée Firefox s'ouvrira, comme indiqué ci-dessous.
Étape 4) Créer un profil
Sélectionnez l'option « Créer un profil » affichée dans la capture d'écran suivante pour démarrer l'assistant.
Maintenant, sélectionnez l’option Créer un profil dans la fenêtre et un assistant s’ouvrira. Cliquez sur suivant.
Étape 5) Donnez votre nom de profil
Saisissez un nom pour le profil d'automatisation dans le champ mis en évidence ci-dessous et terminez l'assistant.
Maintenant que votre profil est prêt, vous pouvez sélectionner votre profil et ouvrir FirefoxÀ partir de là, le profil se comporte comme n'importe quelle autre session de navigateur, donc un premier script WebDriver se présentera contre lui sans modification.
Vous remarquerez que le nouveau Firefox La fenêtre n'affichera aucun de vos signets et icônes favoris.
Remarque : Le dernier profil sélectionné sera chargé automatiquement au prochain . Firefox lancement. Vous devrez redémarrer le gestionnaire de profils si vous souhaitez modifier les profils.
Script d'automatisation pour Selenium
Une fois le profil créé, l'étape suivante consiste à le charger à partir du code. Pour accéder aux profils nouvellement créés Firefox profil dans un Selenium Pour tester le logiciel WebDriver, nous devons utiliser la classe intégrée ProfilesIni de WebDriver et sa méthode getProfile, comme indiqué ci-dessous.
⚠️ Note de version : Les extraits de cette section sont les originaux Selenium 2e forme. Dans le présent Selenium libère les vies de classe dans org.openqa.selenium.firefox.ProfilesIni - L' .interne Le sous-package a été supprimé et le profil est transmis au conducteur via FirefoxOptions. Voir les options. FirefoxVous trouverez ci-dessous la section « Options » pour l’équivalent moderne.
Selenium code pour le profil
Il s'agit d'un code permettant d'implémenter un profil, qui peut être intégré dans le Selenium code.
ProfilesIni profile = new ProfilesIni();
// cela créera un objet pour le Firefox profil
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// cela initialisera le Firefox driver
WebDriver driver = new FirefoxDriver(myprofile)
Voyons comment ce code est mis en œuvre dans les exemples suivants.
Firefox Exemple de profil 1
Le premier exemple charge un profil par son nom. La capture d'écran ci-dessous montre le même script à l'intérieur de l'éditeur.
// 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(); } }
Explication du code
Vous trouverez ci-dessous l'explication du code ligne par ligne.
- Code lignes 2 à 7 : Tout d’abord, nous devons importer le package nécessaire à l’exécution du Selenium code.
- Code ligne 8 : Créez une classe publique «FirefoxProfil."
- Code ligne 9 : Créez un objet (vous devez avoir des connaissances de base des concepts de la POO).
- Code lignes 10-11 : Nous devons initialiser Firefox profil avec l'objet myprofile.
- Code ligne 13 : Créer un objet pour Firefox.
- Code ligne 15 : Agrandir la fenêtre.
- Code ligne 17 : driver.get est utilisé pour naviguer vers l’emplacement donné URL.
- Code ligne 19 : Le délai d’attente est utilisé pour attendre un certain temps afin que le navigateur puisse charger la page avant de passer à la page suivante.
- Code ligne 21 : Fermer Firefox.
Prenons un autre exemple.
Firefox Exemple de profil 2
Le deuxième exemple ignore le fichier profiles.ini et pointe directement vers le dossier des profils, comme le montre la capture d'écran de l'éditeur.
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(); }
Explication du code
Vous trouverez ci-dessous l'explication du code ligne par ligne.
- Code lignes 1 à 6 : Tout d’abord, nous devons importer le package nécessaire à l’exécution du Selenium code.
- Code ligne 8 : Créer une classe publique FirefoxProfil 2.
- Code ligne 12 : Créez l’objet myprofile en vous référant au chemin exact.
- Code ligne 14 : Créer un objet pour Firefox.
- Code ligne 16 : Agrandir la fenêtre.
- Code ligne 18 : driver.get est utilisé pour naviguer vers l’emplacement donné URL.
- Code ligne 20 : Le délai d’attente est utilisé pour attendre un certain temps afin que le navigateur puisse charger la page avant de passer à la page suivante.
- Code ligne 22 : Fermer Firefox.
Notez que le chemin d'accès dans cet extrait est écrit exactement comme dans le tutoriel original. Sur une machine réelle, les barres obliques inverses doivent être échappées, par exemple « C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\ ».Firefox\\Profiles\\xyzProfile.default".
Comment utiliser un Firefox Profil dans Selenium 4 avec FirefoxOptions
Les deux exemples ci-dessus ne compilent que contre Selenium 2. Deux choses ont changé par la suite, et tous les tutoriels actuels utilisent la nouvelle version.
- ProfilsIni a quitté le interne sous-paquet, donc l'importation est maintenant org.openqa.selenium.firefox.ProfilesIni.
- Le FirefoxConducteur(FirefoxLe constructeur de profil a été supprimé. Le profil est associé à un FirefoxL'objet d'options est transmis au pilote.
- Selenium 4 délais d'attente prennent un java.time.Duration au lieu d'une valeur plus un TimeUnit, donc implicitlyWait(5, TimeUnit.SECONDS) devient implicitlyWait(Duration.ofSeconds(5)).
Le tableau ci-dessous associe chaque appel hérité à son remplacement.
| Appel hérité (Selenium 2) | Appel actuel (Selenium 3 et 4) |
|---|---|
| import org.openqa.selenium.firefox.internal.ProfilesIni; | import org.openqa.selenium.firefox.ProfilesIni; |
| New FirefoxChauffeur (mon profil) | options.setProfile(myprofile); nouveau FirefoxConducteur (options) |
| Attendre implicitement(5, TimeUnit.SECONDES) | Attendre implicitement(Durée.deSecondes(5)) |
| System.setProperty pour geckodriver | Résolu automatiquement par Selenium Gérant |
Réécrit avec une version actuelle, l'exemple 1 ressemble à ceci.
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 recherche de profils elle-même reste inchangée : ProfilesIni lit toujours le fichier profiles.ini depuis le Firefox Le dossier application-data et la méthode getProfile renvoient toujours null lorsque le nom ne correspond à aucun profil ; il est donc judicieux d’ajouter une vérification de valeur nulle avant le démarrage du pilote. Le même objet d’options contient également les arguments utilisés ailleurs, tels que ceux de agrandir ou redimensionner la fenêtre du navigateur.
Comment régler Firefox Préférences du profil dans Selenium
Un profil enregistré ne représente que la moitié du travail. La plupart des automatisations nécessitent quelques préférences définies dans le code afin que le même comportement soit appliqué à chaque machine. La méthode setPreference écrit ces valeurs dans la copie du profil avant l'exécution. Firefox lance.
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);
Les préférences ci-dessous couvrent les cas qui se présentent le plus souvent dans la programmation quotidienne.
| Préférence | Ce qu'il contrôle |
|---|---|
| liste des dossiers de téléchargement du navigateur | Réglez cette option sur 2 pour utiliser un dossier de téléchargement personnalisé au lieu du dossier par défaut du système. |
| navigateur.download.dir | Le chemin absolu Firefox enregistre les téléchargements dans. |
| navigateur.helperApps.neverAsk.saveToDisk | Types MIME enregistrés sans afficher la boîte de dialogue de téléchargement. |
| dom.webnotifications.activé | Définissez cette valeur sur « false » pour désactiver les notifications push web. |
| intl.accept_languages | L'en-tête Accept-Language, utile pour les opérations de localisation. |
| general.useragent.override | Remplace la chaîne d'agent utilisateur envoyée par le navigateur. |
Deux limites sont importantes à connaître. Les préférences doivent être définies avant la création du pilote, car WebDriver copie le profil au lancement et les modifications ultérieures sont ignorées. WebDriver réserve également un petit ensemble de préférences nécessaires à la communication avec le navigateur, et il les remplace quelles que soient les préférences que vous lui attribuez. Ces valeurs étant stockées dans le profil et non dans le script, elles sont également conservées lors de la création du pilote. test sur plusieurs navigateurs Exécuter sans aucune modification du code de test.
Commun Firefox Erreurs de profil dans Selenium et comment les réparer
Les problèmes de profilage se manifestent généralement par une erreur de compilation ou par l'ouverture d'un navigateur avec des paramètres incorrects. Le tableau répertorie les erreurs les plus fréquemment signalées, ainsi que leurs causes.
| Symptôme | Causes | Fixer |
|---|---|---|
| Le constructeur FirefoxConducteur(FirefoxProfil) n'est pas défini | Le constructeur a été supprimé après Selenium 2. | Enveloppez le profil dans FirefoxUtilisez plutôt l'objet d'options. |
| Impossible de résoudre l'importation org.openqa.selenium.firefox.internal.ProfilesIni | La classe a été déplacée hors du sous-package interne. | Importer org.openqa.selenium.firefox.ProfilesIni. |
| NullPointerException sur getProfile | Le nom du profil ne correspond à aucune entrée du fichier profiles.ini. | Rouvrez le gestionnaire de profils et copiez le nom exactement, en respectant la casse. |
| Votre Firefox Le profil ne peut pas être chargé. Il est peut-être manquant ou inaccessible. | Une autre Firefox L'instance contient déjà le profil, ou le chemin d'accès au dossier est incorrect. | Fermez tous les Firefox Ouvrez la fenêtre, puis vérifiez le chemin d'accès par rapport aux emplacements indiqués ci-dessus. |
| Une préférence n'a aucun effet | Ce paramètre a été défini après le démarrage du pilote, ou WebDriver le réserve. | Déplacez chaque appel à setPreference au-dessus de FirefoxConstructeur de pilotes. |
Si le navigateur démarre correctement mais que le script échoue toujours par la suite, le profil n'est probablement pas en cause. Poursuivez votre lecture. gestion des exceptions dans Selenium c'est généralement le chemin le plus rapide à partir de ce point.







