25

I used Selenium with Python Chrome webdriver. In my code I used:

driver = webdriver.Chrome(executable_path = PATH_TO_WEBDRIVER)

to point the webdriver to the webdriver executable. Is there a way to point webdriver to the Chrome Browser binaries?

In https://sites.google.com/a/chromium.org/chromedriver/capabilities they have the following (which I assume it what I'm looking for):

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Anyone has an example for Python?

4 Answers 4

45

You can set Chrome Browser Binary location through ChromeDriver using Python ing the following different ways:


Using Options

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
driver = webdriver.Chrome(options=options, executable_path="C:/Utility/BrowserDrivers/chromedriver.exe", )
driver.get('http://google.com/')

Using DesiredCapabilities

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
cap = DesiredCapabilities.CHROME
cap = {'binary_location': "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"}
driver = webdriver.Chrome(desired_capabilities=cap, executable_path="C:\\Utility\\BrowserDrivers\\chromedriver.exe")
driver.get('http://google.com/')

Using Chrome as a Service

from selenium import webdriver
import selenium.webdriver.chrome.service as service
service = service.Service('C:\\Utility\\BrowserDrivers\\chromedriver.exe')
service.start()
capabilities = {'chrome.binary': "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"}
driver = webdriver.Remote(service.service_url, capabilities)
driver.get('http://www.google.com')
Sign up to request clarification or add additional context in comments.

7 Comments

Looks like in the right direction. I'm working on a mac.I tried downloading chrome browser binaries but the only thing I found was Chromium binaries and if I try using it the driver will error-out "No chrome binaries found". On the other hand, I tried moving chrome from: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome and use it locally but then the driver just hangs.
@user123 Get ChromeDriver from the right place https://sites.google.com/a/chromium.org/chromedriver Thanks
I saw the binary_location in the ChromeOptions documentation so I accepted the answer. Now I'm still stuck with finding the right chrome executable for Mac.
I only see chromedriver downloads not the actual chrome browser
chrome_options is being deprecated, instead of chrome_options=options use options=options
|
1

Is there a way to point webdriver to the Chrome Browser binaries?

As others have already stated, use binary_location. However, the location of Chrome moves around depending on the the platform. Fedora and Ubuntu use different locations. So you may want to use something like:

def get_chrome():
    if os.path.isfile('/usr/bin/chromium-browser'):
        return '/usr/bin/chromium-browser'
    elif os.path.isfile('/usr/bin/chromium'):
        return '/usr/bin/chromium'
    elif os.path.isfile('/usr/bin/chrome'):
        return '/usr/bin/chrome'
    elif os.path.isfile('/usr/bin/google-chrome'):
        return '/usr/bin/google-chrome'
    else:
        return None

And then:

if version.parse(selenium.__version__) >= version.parse("3.0"):
    opts = Options()
    opts.binary_location = get_chrome()
    opts.add_argument('--headless')
    opts.add_argument('--no-sandbox')
    opts.add_argument('--disable-dev-shm-usage')

    driver = webdriver.Chrome(options=opts)
    driver.maximize_window()
else:
    opts = Options()
    opts.headless = True
    opts.binary_location = get_chrome()

    driver = webdriver.Chrome(options=opts)
    driver.maximize_window()

agent = driver.execute_script('return navigator.userAgent')

Comments

1

Thanks a lot I was struggling with this for 2.5 hours as I did not know how to set the Chrome Executable path in Python. Works now

options = Options()
options.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
driver = webdriver.Chrome(options=options, executable_path="C:/Utility/BrowserDrivers/chromedriver.exe", )

Comments

-3

First of all if you want to use chrome then you need to download it's binary from below URL :-

https://sites.google.com/a/chromium.org/chromedriver/

Now you need to pass this driver path to the selenium webdriver.

If you are using python the code should be like below :-

    driver = webdriver.Chrome('C:\Users\name\Downloads\chromedriver_win32 (3)\chromedriver.exe')
    driver.implicitly_wait(30) # seconds
    driver.get('https://www.google.co.in/')

Hope it will help you :)

1 Comment

Actually, it's not what I'm looking for. Chromedriver binaries and the Chrome browser binaries are two different things. For Chromedriver I already have a working code. I'm referring to Chrome browser binaries.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.