如何关闭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
相关产品推荐
相关产品推荐

