Java 如何使用Selenium for Firefox和Chrome禁用推送通知?

Java 如何使用Selenium for Firefox和Chrome禁用推送通知?,java,selenium,selenium-webdriver,selenium-chromedriver,geckodriver,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,Geckodriver,我想在通过Selenium Webdriver启动Firefox浏览器时禁用通知。 我发现了,但它已被弃用,在Firefox上对我不起作用(尽管它在Chrome上工作得很好) 我正在对pom.xml使用此依赖项: org.seleniumhq.selenium 硒爪哇 3.11.0 如果您的用例是禁用通知,则以下是选项: 要在Firefox浏览器客户端中禁用,请借助FirefoxProfile并传递键dom.webnotifications.enabled和dom.push.enabled,

我想在通过Selenium Webdriver启动Firefox浏览器时禁用通知。
我发现了,但它已被弃用,在Firefox上对我不起作用(尽管它在Chrome上工作得很好)

我正在对pom.xml使用此依赖项:


org.seleniumhq.selenium
硒爪哇
3.11.0
如果您的用例是禁用通知,则以下是选项:

  • 要在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/");
    
    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/");
    
注意:此方法使用存储在我的本地系统中的名为debanjan的现有
FirefoxProfile
,该系统是根据

  • 要在Chrome浏览器客户端中禁用通知,请借助setExperimentalOption()传递包含配置文件的哈希映射。默认内容设置值。值为2的通知

    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/");
    
    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/");
    
    System.setProperty(“webdriver.chrome.driver”,“C:\\path\\to\\chromedriver.exe”);
    Map prefs=新的HashMap();
    prefs.put(“profile.default\u content\u setting\u values.notifications”,2);
    prefs.put(“凭证启用服务”,false);
    prefs.put(“profile.password\u manager\u enabled”,false);
    ChromeOptions选项=新的ChromeOptions();
    选项。设置实验选项(“prefs”,prefs);
    选项。添加参数(“开始最大化”);
    options.addArguments(“禁用信息栏”);
    options.addArguments(“--disable extensions”);
    options.addArguments(“--disable notification”);
    WebDriver=新的ChromeDriver(选项);
    驱动程序。获取(“https://www.ndtv.com/");
    

这适用于Firefox,但我更改了一行:
FirefoxProfile testprofile=profile.getProfile(“默认”)这是通用解决方案吗?我的队友可以在其他主机/操作系统上使用它?@vixsimplex我在评论中添加了关于您问题的参考。但是,根据最佳实践,避免使用默认FirefoxProfile,因为它可能包含加载项、书签等。因此,在加载默认配置文件时,您可能会遇到超时错误。@DebanjanB我已将此解决方案用于chrome,但通知仍然是“xxxx希望显示通知”。你能看一下吗?