如何使用Brave网络浏览器与Python、Selenium和ChromeDriver?

11

我从谷歌的Chrome浏览器切换到勇敢浏览器,但是在使用勇敢浏览器时遇到了一些问题,它与Chrome的使用方式不同。由于勇敢浏览器基于Chromium开发,所以我认为应该不难解决。我确保我的勇敢浏览器和Chromedriver版本相同,如下所示:

~/some/path $ chromedriver --version
ChromeDriver 76.0.3809.126 (d80a294506b4c9d18015e755cee48f953ddc3f2f-refs/branch-heads/3809@{#1024})

我的chromedriver也在/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个回答

33

我终于成功让它运行起来:

尝试这个 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")

干杯。


8
executable_path 键用于传递 WebDriver 二进制文件的绝对路径,即 chromedriver 可执行文件。
要启动一个 Brave 浏览器会话,还必须通过 ChromeOptions 实例的 binary_location 参数传递 brave-browser 二进制文件的绝对位置。
因此有效的代码块将为:
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")

参考资料

你可以在以下链接中找到一些相关的讨论:


2

这个方法同样适用于Windows 10上使用勇敢浏览器。我下载了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")

请确保下载与您的Brave浏览器匹配的驱动程序。转到“关于Brave”并查找Chromium驱动程序版本,例如Chromium:91.0.4472.164,然后从Chromium下载站点选择该版本:https://chromedriver.chromium.org/downloads。 - Thane Plummer

0
以上的解决方案给了我一些错误。这段代码可以消除可执行路径和选项错误。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")

0
根据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)

我还是搞不清楚如何连接到当前正在运行的会话,而不是打开一个全新的测试会话窗口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接