Siddharth Mishra
Siddharth Mishra

Reputation: 55

How can I download Appropriate Chromedriver in Protractor using Webdriver-Manager

I have designed a cucumber-protractor based automation framework where everything is working fine except for the Webdriver-manager. I need to update the binaries manually each time the IT Department updates google chrome version.

When i use command "webdriver-manager update --proxy=http://someproxy.com:PORT#", webdriver-manager always downloads the latest chromdriver binaries instead of a compatible version as per the current Chrome Version.

Please help me if there is a way to determine the chrome version automatically and download the corresponding Chrome binaries.

I have tried to search for similar behavior and forums elsewhere but none of the commands work. Instead it always downloads the latest version of chromedriver binaries instead of a compatible one.

Please help with some sample code in-case you come through a solution to this.

Upvotes: 2

Views: 3312

Answers (3)

Cosmin
Cosmin

Reputation: 2404

You could run a sh prior to starting your tests that will determine wether the chromedriver needs to be updated:

#!/bin/bash

# get existing chromedriver version
EXISTING_CD_VERSION=$(node_modules/.bin/chromedriver -version | egrep -o '(\d+)\.(\d+)\.(\d+)')

# get installed Google Chrome version
CHROME_VERSION=$(/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version | egrep -o '(\d+)\.(\d+)\.(\d+)')

if [ "$EXISTING_CD_VERSION" = "$CHROME_VERSION" ]; then
    echo "ChromeDriver version matches the Google Chrome version"
else
    NEW_CD_VERSION=$(curl https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION)
    node_modules/.bin/webdriver-manager update --versions.chrome $NEW_CD_VERSION
fi

NOTE: The script above is getting the Google Chrome version from a MacOS system. If you're on Linux, you need to change that to google-chrome --version

Upvotes: 3

Sergey Pleshakov
Sergey Pleshakov

Reputation: 8978

what you actually need to do is to match a version of your local chrome to the version of chromedriver. So

First, find out what your version of chrome is. From example it is 86.0.4240.111

Then, find out what chromedriver version can be used. Take the major version of the browser (first 3 numbers, 86.0.4240 in our case) and find the corresponding version of the driver by going to this url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION} (put the major browser version instead of ${CHROME_VERSION}). You'll see the chromedriver you're looking for is 86.0.4240.22

then just update webdriver specifying the desired version of chromedriver

webdriver-manager update --gecko=false --versions.chrome $VERSION

Make sure to put 86.0.4240.22 instead of $VERSION


But it maybe tricky here because there are 2 installation of protractor usually:

  • local
  • global

and each has it's own webdriver-manager. So make sure you're updating the right one

Thus you may need to go to it's folder and from that folder run npm i webdriver-manager@latest and then node ./bin/webdriver-manager update --gecko=false

when you updated the right webdriver, install the right chromedriver like so

node ./bin/webdriver-manager update --gecko=false --versions.chrome $VERSION

Upvotes: 0

PDHide
PDHide

Reputation: 19989

https://github.com/angular/webdriver-manager/blob/legacy/docs/versions.md

webdriver-manager start --versions.chrome  87.0.4280.88

you can use --versions.chrome to specify the driver version

Upvotes: 0

Related Questions