【问题标题】:Deactivate chrome alert with selenium用硒停用铬警报
【发布时间】:2019-08-15 08:12:23
【问题描述】:

我想为我的 selenium 脚本停用此 chrome 警报(见附件)。到目前为止我尝试了什么:

        ChromeOptions ops = new ChromeOptions();
        ops.addArguments("--disable-notifications");
        System.setProperty("webdriver.chrome.driver", "./lib/chromedriver");
        driver = new ChromeDriver(ops);

还尝试了以下参数:disable-infobarsdisable-popup-blocking。这些都没有为我解决问题。

我尝试了这里解释的解决方案:如何禁用How to disable a "Reload site? Changes you made may not be saved" popup for (python) selenium tests in chrome? 但这对我不起作用。

抱歉,德语提醒,它询问我是否要离开页面。

【问题讨论】:

  • 您能翻译一下警报信息的内容吗?
  • 离开网站?您的更改可能无法保存。
  • 但是警报信息本身并不重要。我想启动 chrome,这样就不会弹出任何警报。对消息没有影响。
  • 在 ChromeDriver v75 及以上版本中,您可以通过设置 options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.DISMISS); 来自动关闭或接受所有提示。 (或 UnexpectedAlertBehaviour.ACCEPT)。 (这将在某些后续操作之前发生......在这种情况下,您正在导航,因此它应该立即发生)如果您想完全删除警报,您可以修改 DOM 以通过执行 javascript 删除“onbeforeunload”事件处理程序.我不知道是否有不显示警报的驱动程序选项。
  • 是的,这行得通-但我想完全删除它而不对 DOM 进行更改。有什么解决办法吗?

标签: java selenium google-chrome


【解决方案1】:

对于新的 Chrome 版本 (>50),您必须使用以下内容,

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

因此,如果您需要禁用通知,您可以使用此语句,

profile.default_content_setting_values.notifications = 2

要启用,

profile.default_content_setting_values.notifications = 1

【讨论】:

  • 不,在这种情况下不起作用。我认为这不是通知。应该是“警报”或其他内容。
【解决方案2】:

您是否尝试过为您要处理通知的页面提供导航。

driver.get

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 2020-07-01
    • 2021-11-14
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    相关资源
    最近更新 更多