How to run Selenium tests on the Brave web browser?

21,350

Solution 1

For the record: this is no longer an issue since Brave went full-Chromium (starting from version 0.57). I can now pass instructions to the WebDriver by initializing it using the code snippet included in the question.

Nevertheless, be sure to check that your ChromeDriver version is compatible with your Brave Browser version.

Solution 2

System:
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 (Official Build) (64-bit)

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')

Reference:
Set chrome browser binary through chromedriver in Python

Solution 3

for windows user path must be absolute in your case

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);

Solution 4

Thanks, @BarneyKelly, works like a charm! In python3 (Linux Mint 2020) I used:

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)

Again, Thank You for your help.

Share:
21,350

Related videos on Youtube

Gertjan Franken
Author by

Gertjan Franken

Web security researcher

Updated on July 09, 2022

Comments

  • Gertjan Franken
    Gertjan Franken almost 2 years

    I am trying to run some Selenium tests on the Brave web browser. I am able to start the Brave web browser through Selenium by using the ChromeDriver. However, nothing else works, e.g. I cannot cause Brave to load a certain web page.

    As Brave is based on Chromium, I would think this is the way to go. Are there more appropriate ways that support Brave to be driven by Selenium?

    This is de code that I used:

        ChromeOptions options = new ChromeOptions().setBinary("/Applications/Brave.app/Contents/MacOS/brave");
        WebDriver driver = new ChromeDriver(options);
    
    • visola
      visola over 6 years
      Could you add more details on how did you made the webdriver start Brave? I'm trying to do something similar and looking for details.
    • Gertjan Franken
      Gertjan Franken over 6 years
      I used the following line to use the Brave binary for the ChromeDriver: ChromeOptions options = new ChromeOptions().setBinary("/path/to/brave/executable");
    • sapbucket
      sapbucket about 6 years
      Did you really get it to load? I see an exception when I try: System.InvalidOperationException occurred HResult=0x80131509 Message=unknown error: no chrome binary at C:\SOMEPATH\Brave64\app-0.22.22\brave.exe (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....[and this goes on for a while]
    • Gertjan Franken
      Gertjan Franken about 6 years
      Yes, I managed to load Brave, but that's it. Did it on MacOS though, not sure if the path has something to do with it.
  • Petru Zaharia
    Petru Zaharia over 4 years
    Thanks Barney. For others, please note that as of Brave Version 0.64.77 Chromium: 74.0.3729.169 you have to mach Chromium Version with ChromeDriver Version (in this case ChromeDriver 74.0.3729.6) and the .SetBinary() method changed to .BinaryLocation property that you can get & set before calling the constructor of ChromeDriver() with the options object.
  • Chacho Fuva
    Chacho Fuva over 4 years
    I have similar issue. Some days ago I changed my browser Chrome to Brave. So I uninstalled Chrome, but my script refered to chromedriver. ¿Is the same method ? I'm using Ubuntu 18.04 and Anaconda
  • Mohammed Shareef C
    Mohammed Shareef C over 3 years
    @PetruZaharia Your comment need to be part of an answer
  • William
    William over 2 years
    Do you have an example of using this with all the basic code needed to launch a browser instance? I am trying to get this working as a "hello world" app and I am unsure how to incorporate your code. Thank you!