Как использовать браузер Brave с python, selenium и chromedriver?
Я перешел с Google Chrome на браузер Brave, и мне трудно заставить его работать с Brave, как это было с Chrome. Brave основан на хроме, поэтому я подумал, что это не должно быть так сложно. Я убедился, что мой Brave и Chromedriver используют одну и ту же версию, как эта,
~/some/path $ chromedriver --version
ChromeDriver 76.0.3809.126 (d80a294506b4c9d18015e755cee48f953ddc3f2f-refs/branch-heads/3809@{#1024})
Моя хромированная отвертка тоже в /user/bin
,
~/path $ cd /usr/bin/
/usr/bin $ ls | grep chromedriver
chromedriver
И чтобы проверить версию Brave, я получаю: Version 0.68.132 Chromium: 76.0.3809.132 (Official Build) (64-bit)
Затем я запускаю этот код,
from selenium import webdriver
driver = webdriver.Chrome(executable_path='/usr/bin/brave-browser')
driver.get("http://www.python.org")
driver.close()
Это открывает окно Brave, но вместо того, чтобы получить страницу, на которую указывает драйвер, выдается исключение,
Traceback (most recent call last):
File "webscrap.py", line 3, in <module>
driver = webdriver.Chrome(executable_path='/usr/bin/brave-browser')
File "/home/username/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
self.service.start()
File "/home/username/.local/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "/home/username/.local/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 111, in assert_process_still_running
% (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service /usr/bin/brave-browser unexpectedly exited. Status code was: -11
5 ответов
Наконец-то мне удалось заставить его работать:
Попробуйте этот скрипт python (python3.7)
from selenium import webdriver
driver_path = "C:/Users/username/PycharmProjects/chromedriver.exe"
brave_path = "C:/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"
option = webdriver.ChromeOptions()
option.binary_location = brave_path
# option.add_argument("--incognito") OPTIONAL
# option.add_argument("--headless") OPTIONAL
# Create new Instance of Chrome
browser = webdriver.Chrome(executable_path=driver_path, chrome_options=option)
browser.get("https://www.google.es")
ура.
В
executable_path
key используется для передачи абсолютного пути двоичного файла WebDriver, то есть исполняемого файла chromedriver.
Чтобы инициировать сеанс браузера Brave дополнительно, вы должны передать абсолютное местоположение двоичного файла brave-browser черезbinary_location
аргумент экземпляра
ChromeOptions
.
Таким образом, эффективный блок кода будет:
from selenium import webdriver
chromedriver_path = '/usr/bin/chromedriver'
brave_path = '/usr/bin/brave-browser'
option = webdriver.ChromeOptions()
option.binary_location = brave_path
browser = webdriver.Chrome(executable_path=driver_path, options=option)
browser.get("https://www.google.es")
Рекомендации
Вы можете найти пару соответствующих подробных обсуждений в:
- DeprecationWarning: используйте параметры вместо ошибки chrome_options с помощью ChromeDriver и Chrome через Selenium в системе Windows 10
- Как запустить браузер Brave с помощью Selenium и Python в Windows
- DeprecationWarning: используйте параметры вместо ошибки chrome_options при использовании Brave Browser с Python Selenium и Chromedriver в Windows
Это также работает в Windows 10 с браузером Brave. Скачал Chromedriver и положил в папку с Brave.exe.
from selenium import webdriver
driver_path = "C:\\Users\\5150s\\AppData\\Local\\Programs\\Python\\Python38\\chromedriver.exe"
brave_path = "C:\\Program Files (x86)\\BraveSoftware\\Brave-Browser\\Application\\brave.exe"
option = webdriver.ChromeOptions()
option.binary_location = brave_path
browser = webdriver.Chrome(executable_path=driver_path, options=option)
browser.get("https://www.google.es")
Начиная с Selenium 4.15.2, очевидно, больше нет необходимости создавать Службу. По крайней мере, в моей установке Ubuntu (23) я мог открыть Brave, просто используя следующий код.
options = ChromeOptions()
options.add_argument("start-maximized")
options.binary_location = "/opt/brave.com/brave/brave"
browser = Chrome(options=options)
Тем не менее я не могу понять, как подключиться к текущему сеансу вместо того, чтобы открыть новое окно сеанса тестирования.
Приведенные выше решения дали мне некоторые ошибки. Этот код удаляет ошибки пути к исполняемому файлу и параметров. Chromedriver находится в папке pycharm.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
driver_path = "C:/Users/johnm/PycharmProjects/chromedriver.exe"
brave_path = "C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe"
s=Service(driver_path)
option = webdriver.ChromeOptions()
option.binary_location = brave_path
browser = webdriver.Chrome(service=s, options=option)
browser.get("https://www.google.es")