How to update chromedriver in selenium?
Every now and then when the Chrome is updated, the existing chrome driver used in the script becomes invalid and the below error message is displayed:
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 77 I have to manually update the chrome-driver in the written script. Is there any way to update it automatically with the updated chrome version?
The answer to the question - how to update chromedriver is -
Yes, it can be done. You need to follow these steps, and you need to choose a tool in which you implement them.
Let's have a look at a few lines in Python, I'll outline the main flow and you might want to build it more powerful (like command line parameters etc.)
First I'll import requests:
import requests
Then I'll save the necessary links into two variables + I define the filename of the desired version of chrome driver:
url = 'https://chromedriver.storage.googleapis.com/LATEST_RELEASE_'
url_file = 'https://chromedriver.storage.googleapis.com/'
file_name = 'chromedriver_linux64.zip'
Now I'll let the user choose a version, and I get the version from the site:
version = input()
version_response = requests.get(url + version)
Finally, it's time to download the zip file (if it exists):
if version_response.text:
file = requests.get(url_file + version_response.text + '/' + file_name)
with open(file_name, "wb") as code:
code.write(file.content)
The result of these steps will be a zip file with a chrome driver in the current directory (from where you ran the script). You also might use the zipfile library to extract the zip file after a successful download. If you want to fully automate this, you probably need to build in command line parameters and pipe the chrome version into your Python script. E.g. in Arch-like systems, you might use $ pacman -Qs chromium for getting Chromium version. Since you don't mention a system architecture on which you want to build this, I've chosen mine. When ready, you can let it run with cron or similar.