【问题标题】:deactivate browser notifications in chrome driver for selenium在用于硒的 chrome 驱动程序中停用浏览器通知
【发布时间】:2016-06-24 00:05:20
【问题描述】:

我有一个简单的用户登录,如果登录失败,它会显示通知 (https://developer.mozilla.org/en-US/docs/Web/API/notification) 或警报(如果通知被禁用)。

此外,我想在 NodeJS 中使用 selenium 测试此登录,但没有通知(仅警报)。因此,我尝试使用 chrome 实验选项停用 chrome 中的通知功能。尽管如此,它确实显示了通知。 atm 可能不支持此功能。

我在 NodeJS 中尝试了以下方法:

var options = new chrome.Options();
options.addArguments("profile.default_content_setting_values.notifications", "2");
var driver = new webdriver.Builder().withCapabilities(options.toCapabilities()).build();

以下代码适用于 Java。

Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values.notifications", 2);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(options);

【问题讨论】:

    标签: node.js selenium selenium-chromedriver


    【解决方案1】:

    我必须设置 userPreferences。

    var options = new chrome.Options();
    options.setUserPreferences({'profile.default_content_setting_values.notifications': 2});
    var driver = new webdriver.Builder().withCapabilities(options.toCapabilities()).build();
    

    【讨论】:

      【解决方案2】:

      希望下面的代码有效。 这仅适用于 Chrome

      ChromeOptions opt = new ChromeOptions();
      opt.AddArguments("--disable-notifications");
      opt.AddArguments("--disable-popup-blocking"); 
      driver = new ChromeDriver(@"C:\Users\ChromeDriverPath", opt);
      

      【讨论】:

        【解决方案3】:

        我从许多客户端看到这个问题,尤其是当用户使用 WebdriverIO nodeJS 绑定时。下面的 JS 和 Java 代码 sn-ps 用于启用位置设置:

        对于 JS:

        var options = new chrome.Options();
            options.setUserPreferences({'profile': {'managed_default_content_settings': {'geolocation': 1}}});
            var driver = new webdriver.Builder().forBrowser('chrome').withCapabilities(options.toCapabilities()).build();
        

        对于 Java:

        // Declare variables
         ChromeOptions options = new ChromeOptions();
         Map<String, Object> prefs = new HashMap<String, Object>();
         Map<String, Object> profile = new HashMap<String, Object>();
         Map<String, Object> contentSettings = new HashMap<String, Object>();
        // Specify the ChromeOption we need to set
         contentSettings.put(“geolocation”, 1);
         profile.put(“managed_default_content_settings”, contentSettings);
         prefs.put(“profile”, profile);
         options.setExperimentalOption(“prefs”, prefs);
        // Declare the capability for ChromeOptions
         caps.setCapability(ChromeOptions.CAPABILITY, options);
        

        【讨论】:

          【解决方案4】:

          现在没有toCapabilities 方法。只需传递选项

          const options = new chrome.Options();
          options.setUserPreferences({'profile': {'managed_default_content_settings': {'geolocation': 2 }}});
          this.driver = new Builder().forBrowser('chrome').withCapabilities(options).build();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-16
            相关资源
            最近更新 更多