Установить двоичный браузер chrome через chromedriver в Python
Я использовал Selenium с веб-драйвером Python Chrome. В моем коде я использовал:
driver = webdriver.Chrome(executable_path = PATH_TO_WEBDRIVER)
чтобы указать веб-драйверу на исполняемый файл веб-драйвера. Есть ли способ указать веб-драйверу на двоичные файлы браузера Chrome?
В https://sites.google.com/a/chromium.org/chromedriver/capabilities они имеют следующее (что, я полагаю, именно то, что я ищу):
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
У кого-нибудь есть пример для Python?
2 ответа
Вот ответ на ваш вопрос:
Вы можете настроить Chrome Browser Binary на chrome webdriver в Python следующими способами:
С помощью 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')
Дайте мне знать, если это отвечает на ваш вопрос.
Большое спасибо, я боролся с этим в течение 2,5 часов, так как я не знал, как задать путь к исполняемому файлу Chrome в Python. Работает сейчас
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", )
Есть ли способ указать веб-драйверу на двоичные файлы браузера 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')
Прежде всего, если вы хотите использовать Chrome, вам нужно скачать его в двоичном формате с URL-адреса:-
https://sites.google.com/a/chromium.org/chromedriver/
Теперь вам нужно передать этот путь к драйверу селена.
Если вы используете 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/')
Надеюсь, это поможет вам:)