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.

  • (I.e. Informations de base sur le profil : A Firefox Le profil utilisateur regroupe dans un seul dossier les favoris, les mots de passe enregistrés, les modules complémentaires, les certificats et les préférences d'un utilisateur.
  • ☑️ Emplacement du profil : Windows, Linux et macOS Chaque dossier de profil de magasin se trouve sous un chemin différent dans le répertoire utilisateur.
  • Création de profil: Le gestionnaire de profils intégré s'ouvre avec firefox.exe -p et crée un profil d'automatisation propre en cinq étapes.
  • 🧪 Code accès: La classe ProfilesIni lit le fichier profiles.ini, et la méthode getProfile renvoie le profil nommé sous forme de FirefoxObjet de profil.
  • Syntaxe actuelle : Selenium Les étapes 3 et 4 transmettent le profil. FirefoxOptions.setProfile plutôt que le FirefoxConstructeur de pilotes.
  • ⚠️ Préférences: La fonction setPreference contrôle le dossier de téléchargement, les notifications, la langue et la gestion des certificats avant le lancement du navigateur.

Selenium Firefox Guide de configuration du profil

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.

Firefox dossier de profil affiché sur le disque avec son 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.

Windows Exécutez la boîte de dialogue avec la commande firefox.exe -p saisie dans

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.

Firefox Boîte de dialogue « Choisir un profil utilisateur » listant les profils existants

É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.

écran d'accueil de l'assistant de création de profil dans le Firefox gestionnaire de profil

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.

Entrer dans un nouveau Firefox Nom du profil dans l'assistant de création de profil

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.

Firefox Exemple de profil 1 : script chargeant un profil par son nom dans 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.

Firefox Exemple de profil 2 : script pointant FirefoxProfil à un chemin de dossier

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.

FAQ

Non. FirefoxDriver ne modifie jamais un profil préexistant. Il copie le répertoire du profil dans un emplacement temporaire, applique les préférences requises par WebDriver et lance le navigateur à partir de cette copie, préservant ainsi vos favoris et mots de passe enregistrés.

Oui. Toute extension installée dans le profil se charge avec le navigateur. Vous pouvez également utiliser la méthode `profile.addExtension(new File("chemin/vers/extension.xpi"))` pour en ajouter une à l'exécution, ce qui permet de garder le profil sur disque propre.

Python Il n'existe pas d'équivalent à ProfilesIni. Point FirefoxCréez plutôt le profil dans le répertoire des profils, puis assignez-le à options.profile avant de compiler le pilote. Selenium Python Les liaisons clonent ensuite ce dossier exactement comme Java t.

Les outils de test assistés par IA comparent les préférences enregistrées lors des exécutions réussies avec le profil actuel et détectent les variations, comme un changement de proxy ou de dossier de téléchargement. Certains frameworks utilisent également l'apprentissage automatique pour repérer les anomalies liées au profil avant qu'une compilation n'échoue.

Copilote GitHub génère rapidement le code standard, mais il émet souvent le code supprimé FirefoxConducteur(FirefoxLe constructeur Profile a été appris à partir d'un code plus ancien. Vérifiez toujours que la suggestion utilise FirefoxOptions.setProfile et le package actuel avant de le valider.

Oui. Appelez options.addArguments("-headless") en même temps que options.setProfile(profile). Le profil fournit les préférences et les extensions exactement comme avant, car le mode sans interface graphique ne modifie que leur affichage. Firefox Il s'agit du rendu, et non de la façon dont il lit son répertoire de profil.

Comme WebDriver fonctionne sur une copie temporaire et la supprime à la fin de la session, pour conserver les modifications, modifiez le profil manuellement dans le gestionnaire de profils ou définissez les préférences dans le code afin que chaque exécution démarre à partir du même état connu.

Pas toujours, mais ça aide. Joindre le profil à FirefoxOptions transmet les préférences avec la charge utile des capacités, de sorte qu'un nœud distant applique la même gestion du dossier de téléchargements, du proxy et des certificats que votre machine locale.

Résumez cet article avec :