问题
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