Selenium : comment éviter l'erreur Session not created: This version of ChromeDriver only supports Chrome XX ?

Selenium est un outil permettant d'automatiser l'utilisation d'un navigateur web. Grâce à cela, on peut s'en servir notamment pour effectuer des tests automatisés sur des applications web, ce qui fait gagner un temps précieux. Le message d'erreur "Session not created: This version of ChromeDriver only supports Chrome XX" indique un souci entre Selenium et le navigateur Chrome.

Pour pouvoir "piloter" les navigateurs, Selenium utilise des drivers. Il en existe un par famille de navigateur (Internet Explorer, Chrome, Firefox…). Celui permettant de manipuler Google Chrome s'appelle le "ChromeDriver". Le message d'erreur apparaît quand la version du ChromeDriver installé ne correspond pas avec celle de Google Chrome.

Pour corriger ce problème, il faut d'abord s'assurer que Chrome et le ChromeDriver sont bien à jour. Ouvrez Google Chrome et cliquez sur le bouton de menu en haut à droite. Allez dans le menu "Aide" puis "À propos de Google Chrome". Le navigateur vérifiera alors que les mises à jour sont installées et le mettra à jour si ce n'est pas le cas. Pour le ChromeDriver, il faut utiliser le gestionnaire de paquets en ligne de commande pour mettre à jour l'outil :

//Windows avec Chocolatey (pour ceux ne l'utilisant pas, téléchargez et installez la dernière version depuis le site de Selenium)
choco upgrade chromedriver
//macOS avec Homebrew
brew cask upgrade chromedriver
//Linux avec Aptitude
sudo apt-get update chromium-chromedriver

Si malgré cela, vos versions ne correspondent pas, il est possible de paramétrer le ChromeDriver pour lui spécifier quelle version vous utilisez. La commande suivante liste les versions de Chrome compatibles avec le ChromeDriver.

binman::list_versions("chromedriver")

Choisissez la version la plus proche de votre installation (vous pouvez voir votre version dans le menu "À propos de Google Chrome"). Lorsque vous lancez un driver avec la commande "rsDriver()", il est possible de choisir la version de Chrome à utiliser grâce au paramètre "chromever". La commande suivante est propre au langage R (avec la librairie RSelenium). Lisez bien la documentation de la librairie que vous utilisez pour trouver un paramètre semblable à utiliser.

//Lancement de Selenium pour un chrome en version 87
driver <- rsDriver(browser=c("chrome"), chromever="87.0.4280.141", extraCapabilities = eCaps)

Android