You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关闭Safari Driver时忽略确认弹窗?Selenium3.4+Safari11+Java场景

解决Safari Driver调用driver.close()时弹出确认弹窗的问题

我之前在使用Safari Driver做自动化测试时,也碰到过这个一模一样的烦人的确认弹窗问题。结合你给出的环境(Selenium 3.4 + Safari 11.0 + Java),给你几个实用的解决办法:

方法一:通过JavaScript禁用关闭确认事件

这是自动化场景下最推荐的方案,不需要手动修改浏览器设置,直接在代码里处理:
网站弹出“Are you sure you want to quit this site?”弹窗,本质是页面注册了onbeforeunload事件,我们可以通过JS注入的方式清空这个事件,让浏览器关闭时不再触发确认。

修改你的代码如下:

SafariOptions options = new SafariOptions();
options.setUseCleanSession(true);
WebDriver driver = new SafariDriver(options);
driver.manage().window().maximize();

// ... 你的测试逻辑 ...

// 在关闭窗口前,先执行JS禁用确认弹窗
((JavascriptExecutor) driver).executeScript("window.onbeforeunload = null;");
// 现在调用close就不会弹出确认了
driver.close();

方法二:修改Safari全局偏好设置(适合本地调试)

如果你只是本地调试测试脚本,不想改代码,可以直接修改Safari的设置来禁用这个弹窗:

  • 打开Safari浏览器,点击顶部菜单栏的Safari -> 偏好设置
  • 切换到安全标签页
  • 取消勾选「当网站尝试关闭窗口时警告我」这个选项

这样之后,不管是手动关闭还是通过driver.close()关闭,都不会再弹出确认弹窗了。

补充说明

你当前使用的setUseCleanSession(true)会让Safari每次启动都使用干净的会话,这可能会重置你手动修改的偏好设置,所以如果用方法二,可能需要考虑去掉这个配置,或者确保每次启动后设置能生效(不过自动化场景下还是方法一更可靠)。

内容的提问来源于stack exchange,提问作者yue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:31:32