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:
- Utilisez la classe
ChromeOptions
. Cela est pris en charge par Java, Python, etc. - 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.
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"). |