Fonctionnalités et ChromeOptions

Les fonctionnalités sont des options que vous pouvez utiliser pour personnaliser et configurer une session ChromeDriver. Cette page décrit toutes les fonctionnalités compatibles avec ChromeDriver et explique comment les utiliser.

Les API de langage WebDriver permettent de transmettre des fonctionnalités à ChromeDriver. Le mécanisme exact varie selon la langue, mais la plupart des langues utilisent l'un ou les deux mécanismes suivants:

  1. Utilisez la classe ChromeOptions. Java, Python, etc. sont compatibles avec cette fonctionnalité.
  2. Utilisez la classe DesiredCapabilities. Cette fonctionnalité est compatible avec Python, Ruby, etc. Bien qu'elle soit également disponible en Java, son utilisation en Java est obsolète.

À l'aide de la classe ChromeOptions

Vous pouvez créer une instance de ChromeOptions, qui dispose de méthodes pratiques pour définir des fonctionnalités spécifiques à ChromeDriver. Vous pouvez ensuite transmettre l'objet ChromeOptions au constructeur ChromeDriver:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Depuis la version 3.6.0 de Selenium, la classe ChromeOptions en Java implémente également l'interface Capabilities, ce qui vous permet de spécifier d'autres fonctionnalités WebDriver qui ne sont pas spécifiques à ChromeDriver.

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Utiliser DesiredCapabilities

Pour utiliser DesiredCapabilities, vous devez connaître le nom de la capacité et le type de valeur qu'elle accepte. Consultez la liste complète.

Python

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
  "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

Cas d'utilisation courants

Utiliser un profil personnalisé

Par défaut, ChromeDriver crée un profil temporaire pour chaque session. Vous pouvez définir des préférences spéciales ou simplement utiliser un profil personnalisé, également appelé répertoire de données utilisateur.

Si vous utilisez le profil temporaire, vous pouvez utiliser la fonctionnalité chrome.prefs pour spécifier les préférences à appliquer après le démarrage de Chrome. Pour les profils personnalisés, vous pouvez utiliser l'option de ligne de commande Chrome user-data-dir pour indiquer à Chrome le profil à utiliser:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

Créez votre propre profil personnalisé en exécutant Chrome sur la ligne de commande ou avec ChromeDriver, en définissant le commutateur user-data-dir sur un nouveau répertoire.

Si le chemin d'accès n'existe pas, Chrome crée un profil à l'emplacement spécifié. Vous pouvez ensuite modifier les paramètres du profil, et ChromeDriver pourra utiliser le profil à l'avenir. Ouvrez chrome://version dans le navigateur pour voir quel profil Chrome utilise.

Démarrer Chrome en plein écran

Démarrez Chrome en plein écran à l'aide du bouton start-maximized:

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

Utiliser un exécutable Chrome dans un emplacement non standard

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Bloquer les boîtes de dialogue

Par défaut, ChromeDriver configure Chrome pour autoriser les fenêtres pop-up. Si vous souhaitez bloquer les pop-ups et restaurer le comportement normal de Chrome lorsqu'il n'est pas contrôlé par ChromeDriver, procédez comme suit:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

Définir le répertoire de téléchargement

Le code suivant permet de configurer Chrome pour qu'il télécharge des fichiers dans un répertoire spécifique. Toutefois, plusieurs points sont à prendre en compte:

  • Chrome interdit l'utilisation de certains répertoires pour le téléchargement. En particulier, vous ne pouvez pas utiliser le dossier du bureau comme répertoire de téléchargement. Sous Linux, vous ne pouvez pas utiliser le répertoire d'accueil pour le téléchargement. La liste exacte des répertoires interdits est susceptible d'être modifiée. Nous vous recommandons donc d'utiliser un répertoire unique qui n'a aucune signification particulière pour le système.
  • ChromeDriver n'attend pas automatiquement la fin du téléchargement. Si vous appelez driver.quit() trop tôt, Chrome risque de s'arrêter avant la fin du téléchargement.
  • Pour de meilleurs résultats, utilisez des chemins d'accès complets, car les chemins d'accès relatifs ne fonctionnent pas toujours.
  • Sous Windows, utilisez \` as path separators./`, qui n'est pas fiable sous Windows.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Fonctionnalités reconnues

Consultez la documentation Selenium et la norme WebDriver du W3C pour connaître les fonctionnalités standards acceptées par ChromeDriver. Voici les fonctionnalités spécifiques à Chrome.

Objet ChromeOptions

La plupart des fonctionnalités spécifiques à Chrome sont exposées via l'objet ChromeOptions. Dans certaines langues, ils sont implémentés par la classe ChromeOptions. Dans d'autres langues, ils sont stockés sous le dictionnaire goog:chromeOptions dans certaines fonctionnalités.

Nom Type Par défaut Description
args liste de chaînes    Liste des arguments de ligne de commande à utiliser au démarrage de Chrome. Les arguments associés à une valeur doivent être séparés par un signe "=" (par exemple, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Consultez la liste des arguments Chrome.
binary chaîne   Chemin d'accès au fichier exécutable Chrome à utiliser.
Sous macOS X, il doit s'agir du binaire réel, et non seulement de l'application, par exemple /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
extensions liste de chaînes   Liste des extensions Chrome à installer au démarrage. Chaque élément de la liste doit être une extension Chrome (.crx) empaquetée encodée en base64.
localState dictionnaire   Dictionnaire dont chaque entrée se compose du nom de la préférence et de sa valeur. Ces préférences sont appliquées au fichier d'état local dans le dossier de données utilisateur.
prefs dictionnaire   Dictionnaire dont chaque entrée se compose du nom de la préférence et de sa valeur. Ces préférences ne s'appliquent qu'au profil utilisateur utilisé. Pour voir des exemples, consultez le fichier "Preferences" dans le répertoire des données utilisateur de Chrome.
detach booléen faux Si la valeur est "false", Chrome est fermé lorsque ChromeDriver est arrêté, que la session soit fermée ou non.
Si cette valeur est définie sur "true", Chrome ne se ferme que si la session est fermée. Si cette valeur est définie sur "True" et que la session n'est pas fermée, ChromeDriver ne peut pas nettoyer le répertoire de données utilisateur temporaire utilisé par l'instance Chrome en cours d'exécution.
debuggerAddress chaîne 
Adresse d'un serveur de débogueur Chrome auquel se connecter, au format <nom d'hôte/adresse IP:port>, par exemple "127.0.0.1:38947".
excludeSwitches liste de chaînes    Liste des options de ligne de commande Chrome à exclure que ChromeDriver transmet par défaut lors du démarrage de Chrome. N'ajoutez pas de préfixe -- aux contacteurs.
minidumpPath chaîne    Répertoire dans lequel stocker les minidumps Chrome. (Compatible uniquement avec Linux.)
mobileEmulation dictionnaire   Dictionnaire contenant une valeur pour "deviceName", ou des valeurs pour "deviceMetrics" et "userAgent". Pour en savoir plus, consultez Émulation mobile.
perfLoggingPrefs dictionnaire   Dictionnaire facultatif qui spécifie les préférences de journalisation des performances. Pour en savoir plus, consultez les informations ci-dessous.
windowTypes liste de chaînes   Liste des types de fenêtres qui apparaissent dans la liste des poignées de fenêtre. Pour accéder aux éléments de la WebView, incluez "webview" dans cette liste.
enableExtensionTargets booléen faux Activez l'introspection des cibles d'extensions Chrome. Par défaut, ChromeDriver n'inclut pas les cibles d'extension (à partir de Chrome 136).

Objet perfLoggingPrefs

Le dictionnaire perfLoggingPrefs a le format suivant : Toutes les clés sont facultatives:

Nom Type Par défaut Description
enableNetwork booléen true Indique si les événements doivent être collectés à partir du domaine réseau.
enablePage booléen true Indique si vous souhaitez collecter des événements à partir du domaine de la page.
traceCategories chaîne (vide) Chaîne de catégories de traçage Chrome, séparées par une virgule, pour lesquelles les événements de trace doivent être collectés. Une chaîne non spécifiée ou vide désactive le traçage.
bufferUsageReportingInterval entier positif 1000 Nombre de millisecondes demandé entre les événements d'utilisation du tampon de trace DevTools. Par exemple, si la valeur est 1 000, DevTools indique une fois par seconde le niveau de remplissage de la mémoire tampon de suivi. Si un rapport indique que l'utilisation de la mémoire tampon est de 100%, un avertissement s'affiche.

Capacités renvoyées

Voici la liste de toutes les fonctionnalités renvoyées par Chrome, en d'autres termes, ce que ChromeDriver renvoie lorsque vous créez une session.

Nom Type Description
chrome.chromedriverVersion chaîne version de ChromeDriver
userDataDir chaîne chemin d'accès au répertoire de données utilisateur utilisé par Chrome. Remarque : il se trouve dans un dictionnaire "chrome".