How to disable push-notifications using Selenium for Firefox and Chrome?

倾然丶 夕夏残阳落幕 提交于 2020-01-08 17:21:06

问题


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>

回答1:


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


来源:https://stackoverflow.com/questions/49741876/how-to-disable-push-notifications-using-selenium-for-firefox-and-chrome

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!