如何在勇敢浏览器上运行Selenium测试?

29

我试图在Brave浏览器上运行一些Selenium测试。我能够通过使用ChromeDriver启动Brave浏览器来实现。但是,其他任何操作都无法完成,例如我不能让Brave加载特定的网页。

由于Brave基于Chromium,我认为这应该是正确的方法。是否有更适合支持Selenium驱动Brave的方法?

这是我使用的代码:

    ChromeOptions options = new ChromeOptions().setBinary("/Applications/Brave.app/Contents/MacOS/brave");
    WebDriver driver = new ChromeDriver(options);

你能否添加更多细节,说明你是如何启动Brave浏览器的webdriver的?我正在尝试类似的操作,并寻找详细信息。 - visola
2
我使用了以下代码行来使用 Brave 二进制文件作为 ChromeDriver: ChromeOptions options = new ChromeOptions().setBinary("/path/to/brave/executable"); - Gertjan Franken
1
你真的成功加载了吗?我在尝试时遇到了一个异常:System.InvalidOperationException发生 HResult=0x80131509 Message=未知错误:C:\SOMEPATH\Brave64\app-0.22.22\brave.exe中没有chrome二进制文件 (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 6.1.7601 SP1 x86_64) Source=WebDriver StackTrace: at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) at....[这样持续下去一段时间] - sapbucket
是的,我成功加载了Brave,但仅此而已。不过我是在MacOS上完成的,不确定路径是否有关。 - Gertjan Franken
7个回答

14

声明一下:由于Brave浏览器已经从版本0.57开始全面采用Chromium内核,所以这个问题不再存在。现在我可以通过使用问题中包含的代码片段初始化WebDriver并传递指令。

不过,确保你的ChromeDriver版本与你的Brave浏览器版本兼容。


3
谢谢你,巴尼。对于其他人,请注意,从 Brave 版本 0.64.77 Chromium: 74.0.3729.169 开始,您需要将 Chromium 版本与 ChromeDriver 版本匹配(在这种情况下是 ChromeDriver 74.0.3729.6),并且 .SetBinary() 方法已更改为 .BinaryLocation 属性,您可以在使用 options 对象调用 ChromeDriver() 构造函数之前获取并设置该属性。 - Petru Zaharia
2
@PetruZaharia 您的评论需要成为答案的一部分。 - Mohammed Shareef C

11

系统:
macOS Catalina 10.15.2
Python 3.7.4
pytest 5.3.2
selenium 3.141.0
ChromeDriver 79.0.3945.36
Brave 1.1.23 Chromium: 79.0.3945.88 (官方版本) (64位)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser'
driver_path = '/usr/local/bin/chromedriver'
drvr = webdriver.Chrome(options = options, executable_path = driver_path)
drvr.get('https://stackoverflow.com')

参考:
如何在Python中通过chromedriver设置Chrome浏览器二进制文件


我有类似的问题。几天前我将浏览器从Chrome更改为Brave。因此,我卸载了Chrome,但我的脚本引用了chromedriver。这是相同的方法吗?我正在使用Ubuntu 18.04和Anaconda。 - Chacho Fuva

2

对于 Windows 用户,路径必须是绝对路径。

System.setProperty("webdriver.chrome.driver","E:\\WEBDRIVER PLUGINS\\chromedriver_win32\\chromedriver.exe");
ChromeOptions options = new ChromeOptions().setBinary("C:\\Program Files (x86)\\BraveSoftware\\Brave-Browser\\Application\\brave.exe");
WebDriver driver = new ChromeDriver(options);

1
感谢@BarneyKelly,这个方法非常有效!在Python3(Linux Mint 2020)中,我使用了以下代码:
def abre_navegador(self):
    # Avenue_Basico.wd = webdriver.Firefox()   # Criar instância do navegador 
    # Avenue_Basico.wd = webdriver.Chrome()   # Criar instância do navegador

    options = Options()
    options.binary_location = '/usr/bin/brave-browser'
    driver_path = '/usr/local/bin/chromedriver'
    self.wd = webdriver.Chrome(options = options, executable_path = driver_path)

再次感谢您的帮助。

0

针对Java和Linux用户:

    System.setProperty("webdriver.chrome.driver","src/chromedriver");

    ChromeOptions options = new ChromeOptions();

    options.setBinary("/usr/bin/brave-browser");
    options.addArguments("--start-maximized");
    options.addArguments("--disable-extensions");
    options.addArguments("--disable-gpu ");
    options.addArguments("--no-sandbox");

    WebDriver driver=new ChromeDriver(options);
    driver.get("https://www.yourlinkhere.com");

0

尽管我无法通过上述示例获得成功,但我设法使其像这样工作:

const chrome = require('selenium-webdriver/chrome')

const chromeOptions = new chrome.Options()

chromeOptions.setChromeBinaryPath('/usr/bin/brave-browser')

你有使用这个的示例代码吗?包括启动浏览器实例所需的所有基本代码?我正在尝试将其作为“hello world”应用程序运行,但不确定如何将您的代码整合进去。谢谢! - William

0
这对于Python来说是可行的:
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.binary_location = r"C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe"

driver = webdriver.Chrome(options=chrome_options)

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