我知道这是一个老问题,我已经尝试过一些帖子的答案,例如禁用 Chrome 通知 (Selenium)
不幸的是,没有任何效果,浏览器通知弹出窗口仍然出现并中断了我的模拟。
我的 Chrome 版本是 75.0.3770.100 (Official Build) (64-bit),在 MacOS 上运行。
编辑:
在此问题被标记为如何使用 Selenium for Firefox 和 Chrome 禁用推送通知的副本之后?,我已经尝试了解决方案,但它仍然对我不起作用。
String chromePath = "somepath/selenium-2.48.2/chromedriver";
System.setProperty("webdriver.chrome.driver", chromePath);
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");
driver = new ChromeDriver(options);
以下是我尝试过的原始解决方案。
String chromePath = "somepathto/chromedriver";
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--disable-notifications");
System.setProperty("webdriver.chrome.driver", chromePath);
WebDriver driver = new ChromeDriver(chromeOptions);
// Login
try {
driver.get(sometestURL);
driver.manage().window().maximize();
// do some operations
} catch (Exception ex) {
System.out.println(ex);
}
我也试过这个:
String chromePath = "somepath/selenium-2.48.2/chromedriver";
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values.notifications", 2);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("prefs", prefs);
System.setProperty("webdriver.chrome.driver", chromePath);
WebDriver driver = new ChromeDriver(chromeOptions);
但是通知仍然出现在窗口左上角的“xxxxwebsite想要显示通知允许阻止”。
我做错了什么?