Fonctionnalités et ChromeOptions

Les fonctionnalités sont des options que vous pouvez utiliser pour personnaliser et configurer une session ChromeDriver. Cette page présente 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 diffère selon les langues, mais la plupart des langages utilisent l'un des mécanismes suivants, ou les deux:

  1. Utilisez la classe ChromeOptions. Cela est pris en charge par Java, Python, etc.
  2. Utilisez la classe DesiredCapabilities. Cette fonctionnalité est prise en charge par Python, Ruby, etc. Bien qu'elle soit également disponible en Java, son utilisation en Java est obsolète.

Utiliser 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 de Java implémente également l'interface Capabilities, ce qui vous permet de spécifier d'autres fonctionnalités WebDriver non 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. Cliquez ici pour consulter 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é (également appelé "répertoire de données utilisateur")

Par défaut, ChromeDriver crée un profil temporaire pour chaque session. Il peut arriver que vous souhaitiez définir des préférences spéciales ou simplement utiliser un profil personnalisé. Si c'est le cas, vous pouvez utiliser la fonctionnalité "chrome.prefs" (décrite plus loin ci-dessous) pour spécifier les préférences qui seront appliquées après le démarrage de Chrome. Dans ce dernier cas, vous pouvez utiliser le commutateur 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");

Vous pouvez créer votre propre profil personnalisé en exécutant Chrome (sur la ligne de commande ou via ChromeDriver) en maintenant le bouton user-data-dir défini 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 comme vous le souhaitez. ChromeDriver pourra alors l'utiliser par la suite. Ouvrez chrome://version dans le navigateur pour voir le profil utilisé par Chrome.

Utiliser Chrome en mode plein écran

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

Utiliser un exécutable Chrome à un emplacement non standard

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

Bloquer les fenêtres de dialogue

Par défaut, ChromeDriver configure Chrome pour autoriser les fenêtres pop-up. Si vous souhaitez bloquer les pop-ups (par exemple, pour rétablir 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 peut être utilisé pour configurer Chrome de sorte à télécharger des fichiers dans un répertoire spécifique. Toutefois, vous devez tenir compte des points suivants:

  • Chrome interdit l'utilisation de certains répertoires en vue du téléchargement. En particulier, vous ne pouvez pas utiliser le dossier "desktop" comme répertoire de téléchargement. Sous Linux, vous ne pouvez pas non plus utiliser le répertoire d'accueil pour le téléchargement. La liste exacte des répertoires interdits étant susceptible d'être modifiée, nous vous recommandons d'utiliser un répertoire qui n'a pas de 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.
  • Les chemins relatifs ne fonctionnent pas toujours. Pour un résultat optimal, utilisez plutôt le chemin d'accès complet.
  • Sous Windows, utilisez "" comme séparateurs de chemins. L'utilisation de "/" 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

Veuillez consulter la documentation de Selenium et la norme WebDriver du W3C pour connaître les fonctionnalités standards acceptées par ChromeDriver. Nous ne présentons ici que les fonctionnalités propres à Chrome.

Objet ChromeOptions

La plupart des fonctionnalités spécifiques à Chrome sont exposées via l'objet ChromeOptions. Dans certains langages, il est implémenté par la classe ChromeOptions. Dans les autres langues, ils sont stockés dans le dictionnaire goog:chromeOptions dans les capacités souhaitées.

Nom Type Par défaut  Description 
args  liste de chaînes   Liste des arguments de ligne de commande à utiliser pour démarrer Chrome. Les arguments auxquels une valeur est associée doivent être séparés par un signe "=" (par exemple, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Consultez cette page pour obtenir la liste des arguments Chrome.
binary chaîne   Chemin d'accès au fichier exécutable Chrome à utiliser (sous Mac OS X, il doit s'agir du binaire réel, et pas 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) encodée en base64.
localState dictionnaire   Un dictionnaire avec chaque entrée comprenant le nom de la préférence et sa valeur. Ces préférences sont appliquées au fichier d'état local du dossier des données utilisateur.
prefs dictionnaire   Un dictionnaire avec chaque entrée comprenant le nom de la préférence et sa valeur. Ces préférences ne s'appliquent qu'au profil utilisateur utilisé. Pour obtenir des exemples, consultez le fichier "Preferences" dans le répertoire de données utilisateur de Chrome.
detach boolean false Si la valeur est "false", Chrome se ferme lorsque ChromeDriver est arrêté, que la session soit fermée ou non. Si la valeur est "true", Chrome ne se ferme que si la session est fermée (ou fermée). Notez que si la valeur est "true" et que la session n'est pas fermée, ChromeDriver ne peut pas nettoyer le répertoire temporaire de données utilisateur utilisé par l'instance Chrome en cours d'exécution.
debuggerAddress chaîne
Adresse d'un serveur de débogage Chrome auquel se connecter, au format <nom_hôte/ip:port>, par exemple "127.0.0.1:38947".
excludeSwitches liste de chaînes   Liste des commutateurs de ligne de commande Chrome à exclure que ChromeDriver passe par défaut au démarrage de Chrome. Ne faites pas précéder les commutateurs de --.
minidumpPath  chaîne   Répertoire de stockage des minidumps Chrome . (Disponible uniquement sous Linux.)
mobileEmulation dictionnaire   Dictionnaire contenant une valeur pour "deviceName" ou des valeurs pour "deviceMetrics" et "userAgent". Pour en savoir plus, consultez la section Émulation mobile.
perfLoggingPrefs dictionnaire   Dictionnaire facultatif spécifiant les préférences d'enregistrement des performances. Pour en savoir plus, consultez les informations ci-dessous.
windowTypes liste de chaînes   Liste des types de fenêtres qui s'affichera dans la liste des poignées de fenêtre. Pour accéder aux éléments <webview>, incluez "webview" dans cette liste.

Objet perfLoggingPrefs

Le dictionnaire perfLoggingPrefs a le format suivant (toutes les clés sont facultatives):

Nom Type Par défaut Description
enableNetwork boolean true Indique si les événements à partir du domaine réseau doivent être collectés.
enablePage boolean true Indique si les événements à partir du domaine de la page doivent être collectés.
traceCategories chaîne (vide) Chaîne de catégories de traçage Chrome séparées par une virgule pour lesquelles des é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 1 000 Nombre de millisecondes demandé entre les événements d'utilisation du tampon de trace des outils de développement. Par exemple, si vous obtenez 1 000, puis une fois par seconde, les outils de développement indiquent la saturation du tampon de trace. Si un rapport indique que l'utilisation du tampon est de 100%, un avertissement s'affiche.

Fonctionnalités renvoyées

Voici la liste de toutes les fonctionnalités renvoyées spécifiques à Chrome. (c'est-à-dire 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 (notez qu'il s'agit d'un dictionnaire "chrome").