一尘不染

如何使用Selenium针对Firefox和Chrome禁用推送通知?

selenium

我想通过Selenium Webdriver启动Firefox浏览器时禁用通知。我找到了这个答案,但是它已被弃用,在Firefox上对我不起作用(尽管它在Chrome上可以完美运行)。

我将这种依赖关系用于我的 pom.xml

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.11.0</version>
</dependency>

阅读 551

收藏
2020-06-26

共1个答案

一尘不染

如果您的用 是禁用 通知,则可以使用 以下选项:

  • 要在 Firefox* 浏览器客户端中禁用 推送通知 ,请使用 FirefoxProfile 并将 密钥 dom.webnotifications.enableddom.push.enabled 以及所需的 传递为 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/”);

注意 :此方法使用存储在我的本地系统中的现有FirefoxProfile名称为 debanjan 的现有文件,该文件是
根据在Windows


创建新的Firefox配置

文件中的文档
创建的

  • 要在 Chrome* 浏览器客户端中禁用 通知 ,请借助 setExperimentalOption() 来传递一个 HashMap ,该 HashMap 包含 profile.default_content_setting_values.notifications ,其 Value2 __ *
    System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
    

    Map prefs = new HashMap();
    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/”);

2020-06-26