3

I want to disable the notification when I launch Firefox browser through Selenium Webdriver.
I found this answer, but it's deprecated and does not work for me on Firefox (it works perfectly on Chrome though).

I'm use this dependency for my pom.xml:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.11.0</version>
</dependency>
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
vaan
  • 350
  • 1
  • 8
  • 21

1 Answers1

5

If your usecase is to disable the notification following are the options :

  • To disable Push Notification in Firefox browser client take help of a FirefoxProfile and pass the Keys dom.webnotifications.enabled and dom.push.enabled along with the desired Value as false :

    System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe");
    ProfilesIni profile = new ProfilesIni();
    FirefoxProfile testprofile = profile.getProfile("debanjan");
    testprofile.setPreference("dom.webnotifications.enabled", false);
    testprofile.setPreference("dom.push.enabled", false);
    DesiredCapabilities dc = DesiredCapabilities.firefox();
    dc.setCapability(FirefoxDriver.PROFILE, testprofile);
    FirefoxOptions opt = new FirefoxOptions();
    opt.merge(dc);
    WebDriver driver =  new FirefoxDriver(opt);
    driver.get("https://www.ndtv.com/");
    

Note : This method uses an existing FirefoxProfile by the name debanjan stored in my local system which was created following the documentation at Creating a new Firefox profile on Windows

  • To disable notification in Chrome browser client take help of a setExperimentalOption() to pass a HashMap containing profile.default_content_setting_values.notifications with Value as 2 :

    System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
    Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("profile.default_content_setting_values.notifications", 2);
    prefs.put("credentials_enable_service", false);
    prefs.put("profile.password_manager_enabled", false);
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("prefs", prefs);
    options.addArguments("start-maximized");
    options.addArguments("disable-infobars");
    options.addArguments("--disable-extensions");
    options.addArguments("--disable-notifications");
    WebDriver driver = new ChromeDriver(options);
    driver.get("https://www.ndtv.com/");
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
  • This works for Firefox, but I changed one line: `FirefoxProfile testprofile = profile.getProfile("default");` This is universal solution? It will be works on another hosts/os for my teammates? – vaan Apr 10 '18 at 10:07
  • 1
    @vixsimplex I have added a reference with respect to you question within the comments. However as per best practices avoid using the **default** _FirefoxProfile_ as it may contain _add-ons_, _bookmarks_, etc. As a result you may face **Timeout Errors** while loading the _default_ profile. – undetected Selenium Apr 10 '18 at 15:11
  • @DebanjanB I've used this solution for chrome, but the notification still comes 'xxxx wants to show notification'. https://stackoverflow.com/questions/57015268/selenium-newer-chrome-cannot-disable-browser-notification-tried-other-solns Can you please take a look? – user2751691 Jul 17 '19 at 21:52
  • Thanks++, Python version: https://stackoverflow.com/a/75762833/10284437 – Mévatlavé Kraspek Mar 17 '23 at 00:44