在Python中通过chromedriver设置chrome浏览器二进制文件

时间:2017-08-04 07:24:50

标签: python linux google-chrome selenium selenium-webdriver

我使用Selenium和Python Chrome webdriver。 在我使用的代码中:

driver = webdriver.Chrome(executable_path = PATH_TO_WEBDRIVER)

将webdriver指向webdriver可执行文件。有没有办法将webdriver指向Chrome浏览器二进制文件?

https://sites.google.com/a/chromium.org/chromedriver/capabilities中,他们有以下内容(我认为这是我正在寻找的内容):

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

任何人都有Python的例子吗?

4 个答案:

答案 0 :(得分:11)

您可以通过以下方式在Chrome中将Chrome浏览器二进制文件设置为chrome webdriver:

使用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(chrome_options=options, executable_path="C:/Utility/BrowserDrivers/chromedriver.exe", )
driver.get('http://google.com/')

使用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/')

将Chrome用作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')

答案 1 :(得分:1)

首先,如果您想使用chrome,那么您需要从以下网址下载它的二进制文件: -

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

现在您需要将此驱动程序路径传递给selenium webdriver。

如果您使用的是python,代码应如下所示: -

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

希望它会对你有所帮助:)。

答案 2 :(得分:0)

非常感谢我花了2.5个小时来解决这个问题,因为我不知道如何在Python中设置Chrome可执行路径。现在可以使用

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

答案 3 :(得分:0)

  

是否可以将webdriver指向Chrome浏览器二进制文件?

如其他人所述,请使用binary_location。但是,Chrome的位置会根据平台的不同而变化。 Fedora和Ubuntu使用不同的位置。因此,您可能需要使用类似以下内容的

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

然后:

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(chrome_options=opts)
    driver.maximize_window()
else:
    opts = Options()
    opts.headless = True
    opts.binary_location = get_chrome()

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

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