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:
- Utilisez la classe
ChromeOptions
. Java, Python, etc. sont compatibles avec cette fonctionnalité. - 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.
Objet perfLoggingPrefs
Le dictionnaire perfLoggingPrefs
a le format suivant : Toutes les clés sont facultatives:
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.