使用Appium 2.2测试iOS模拟器时,如何跳过保存密码提示?
解决iOS模拟器登录后「保存密码」提示框的最优方案
一、通过Desired Capabilities配置直接禁用提示(最优)
在初始化Appium Driver时,添加XCUITest专属配置项,从根源阻止「保存密码」提示框弹出:
- 添加
shouldDisableAutofill: true:禁用iOS自动填充功能,直接屏蔽密码保存提示 - 或添加
autoDismissAlerts: true:自动关闭所有系统级弹窗(包含密码保存提示)
TypeScript示例代码:
const driver = await new AppiumDriver().createSession({ capabilities: { platformName: 'iOS', platformVersion: '17.0', // 替换为你的模拟器版本 deviceName: 'iPhone 15', app: '/path/to/your/app', automationName: 'XCUITest', shouldDisableAutofill: true, // 核心配置,阻止提示弹出 // autoDismissAlerts: true, // 备选:自动关闭所有弹窗 }, });
二、兜底方案:代码中手动处理弹窗
如果上述配置无效(适配旧iOS版本或特殊应用场景),可通过代码监听并关闭弹窗:
- 登录操作完成后,等待弹窗加载
- 定位「不保存」按钮并点击
TypeScript示例代码:
// 登录完成后等待弹窗出现 await driver.waitUntil(async () => { try { const dismissBtn = await driver.$('//XCUIElementTypeButton[@name="不保存"]'); return await dismissBtn.isDisplayed(); } catch (err) { return false; } }, { timeout: 5000 }); // 关闭提示框 const dismissBtn = await driver.$('//XCUIElementTypeButton[@name="不保存"]'); await dismissBtn.click();
三、关于appium-chromedriver的说明
你使用的appium-chromedriver主要负责WebView自动化逻辑,「保存密码」提示属于iOS系统级弹窗,与chromedriver无关,无需针对它做额外配置。
内容的提问来源于stack exchange,提问作者Diogo Melo
相关产品推荐
相关产品推荐

