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 diffère selon le langage, mais la plupart des langages utilisent l'un des mécanismes suivants, ou les deux:

  1. Utilisez la classe ChromeOptions. Cette opération est compatible avec Java, Python, etc.
  2. Utilisez la classe DesiredCapabilities. Cette méthode est compatible avec Python, Ruby, etc. Bien qu'elle soit également disponible en Java, son utilisation dans Java est obsolète.

Utiliser la classe ChromeOptions

Vous pouvez créer une instance de ChromeOptions, qui propose des méthodes pratiques pour définir des fonctionnalités spécifiques à ChromeDriver. Vous pouvez ensuite transmettre ChromeOptions dans le 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 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 les fonctionnalités souhaitées

Pour utiliser DesiredCapabilities, vous devez connaître le nom de la capacité et le type de valeur qu'elle utilise. 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é. S'il s'agit du premier, vous pouvez utiliser le fichier "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 bouton bascule de la 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 (en ligne de commande ou via ChromeDriver) avec le commutateur 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, et ChromeDriver pourra utiliser le profil à l'avenir. Ouvrez la page chrome://version dans le navigateur pour voir le profil utilisé par Chrome.

Lancer Chrome en mode plein écran

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

Utiliser un fichier 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 de manière à autoriser les fenêtres pop-up. Si vous souhaitez bloquer les pop-ups (c'est-à-dire 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 afin de télécharger des fichiers dans un répertoire spécifique. Cependant, il y a plusieurs mises en garde à 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 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. Étant donné que la liste exacte des répertoires interdits est 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 que le téléchargement se termine. Si vous appelez driver.quit() trop tôt, Chrome peut 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 chemin. Utiliser "/" 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);

Capacités reconnues

Veuillez consulter la documentation Selenium et la norme W3C WebDriver pour en savoir plus compatibles avec ChromeDriver. Cette liste n'inclut que les données des fonctionnalités.

Objet ChromeOptions

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

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 auxquels une valeur est associée doivent être séparés par le caractère "=" (par exemple, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Voir cliquez ici 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 empaquetée (.crx) encodée en base64
localState dictionnaire   Dictionnaire avec chaque entrée composée 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 des données utilisateur.
prefs dictionnaire   Dictionnaire avec chaque entrée composée du nom de la préférence et de sa valeur. Ces préférences ne s'appliquent qu'au profil utilisateur utilisé. Consultez la section "Préférences" du répertoire de données utilisateur de Chrome.
detach booléen faux Si la valeur est "false", Chrome se ferme à la fermeture de ChromeDriver, 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 des données utilisateur utilisé par l'instance Chrome en cours d'exécution.
debuggerAddress chaîne
Adresse du serveur du débogueur Chrome à laquelle se connecter, sous la forme <nom_hôte/ip:port> (par exemple, '127.0.0.1:38947'
excludeSwitches liste de chaînes   Liste des boutons de ligne de commande Chrome permettant d'exclure ChromeDriver par défaut au démarrage de Chrome. N'utilisez pas le préfixe --.
minidumpPath  chaîne   Répertoire de stockage des minidumps Chrome . (Disponible uniquement sous Linux.)
mobileEmulation dictionnaire   Dictionnaire avec une valeur pour "deviceName" ou des valeurs pour "deviceMetrics" et "userAgent". Pour en savoir plus, consultez la section É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 apparaîtra dans la liste des poignées de fenêtre. Pour accéder à <webview> incluent "webview" de cette liste.

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 ou non à partir du domaine du réseau.
enablePage booléen true Indique si les événements doivent être collectés ou non à 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 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 1000 Nombre de millisecondes requis entre les événements d'utilisation du tampon de trace des outils de développement. Par exemple, si la valeur est de 1 000, une fois par seconde, les outils de développement indiquent le niveau d'occupation du tampon de trace. Si un rapport indique que l'utilisation de la mémoire tampon est de 100%, un avertissement est émis.

Capacités renvoyées

Voici la liste de toutes les fonctionnalités renvoyées par Chrome. (par exemple, 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, ceci est dans un « chrome » dictionnaire