在 chrome selenium 驱动程序中停用浏览器通知

deactivate browser notifications in chrome driver for selenium

我有一个简单的用户登录,如果登录失败,它会显示通知 (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);

我必须设置用户首选项。

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

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

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

我从很多客户那里看到这个问题,尤其是当用户使用 WebdriverIO nodeJS 时 bindings.The 下面的 JS 代码片段和 Java 启用位置设置:

对于 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);

目前没有toCapabilities方法。只需传递选项

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