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

UI测试中如何关闭「是否保存密码」系统Sheet弹窗?

解决Xcode 14.3中密码保存Sheet弹窗的UI测试处理问题

针对你遇到的「是否保存此密码以在应用和网站中使用?」Sheet弹窗无法被常规UIInterruptionMonitor识别的问题,可通过以下两种方案解决:

方案一:调整UIInterruptionMonitor适配Sheet弹窗

修改监控逻辑,不再局限于alert类型元素,直接检查目标按钮是否存在:

addUIInterruptionMonitor(withDescription: "Password Save Sheet") { _ in
    let notNowButton = app.scrollViews.otherElements.buttons["Not now"]
    guard notNowButton.exists else { return false }
    notNowButton.tap()
    // 点击后触发app激活,确保后续流程正常
    app.tap()
    return true
}

// 注意:在可能触发弹窗的操作后,需调用app.tap()触发监控生效
app.tap()

此方案会自动拦截弹窗,无需在每个测试步骤中重复编写处理逻辑。

方案二:在测试流程中主动检查并处理弹窗

在触发密码保存的操作后,主动检查按钮是否存在并点击:

// 执行触发密码保存的操作(例如登录/注册)
// ...

// 等待弹窗出现并处理
let notNowButton = app.scrollViews.otherElements.buttons["Not now"]
if notNowButton.waitForExistence(timeout: 5) {
    notNowButton.tap()
    app.tap() // 恢复app活跃状态
}

这种方式更灵活,适合仅在特定测试场景中出现弹窗的情况。

注意事项

  • 确保按钮文本完全匹配:iOS系统弹窗的按钮文本可能因系统版本/语言不同存在大小写差异,以Xcode录制工具获取的"Not now"为准。
  • 调用app.tap():弹窗出现后App会处于非活跃状态,触发一次轻触操作可激活App并确保监控或后续测试步骤正常执行。

内容的提问来源于stack exchange,提问作者chiarotto.alessandro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:45:06