WebDriverIO:等待两种可能结果的实现方案咨询
解决WebdriverIO+WinAppDriver多结果等待问题
你可以通过waitUntil自定义等待条件,同时监听两种结果对应的元素状态,只要其中一个满足预期就结束等待,无需提前预知最终出现的场景。
实现代码
await loadFile(fileName); /* loading in progress... */ // 定位两种结果对应的元素 const alertElement = await driver.$('~automationId1'); // 弹出提示框元素 const hmiElement = await driver.$('~automationId2'); // HMI界面元素 // 等待任意一种结果出现:提示框显示 或 HMI元素可点击 await driver.waitUntil(async () => { const alertShown = await alertElement.isDisplayed(); const hmiReady = await hmiElement.isClickable(); return alertShown || hmiReady; }, { timeout: 60 * 1000, // 最长等待60秒 interval: 2000, // 每2秒检查一次状态 timeoutMsg: '加载超时,未出现预期的提示框或HMI界面' }); // 根据实际出现的结果执行后续逻辑 if (await alertElement.isDisplayed()) { await alertElement.click(); // 这里编写提示框出现后的测试步骤 } else { // 这里编写回到HMI后的测试步骤 }
关键说明
waitUntil会持续执行传入的异步函数,直到返回true或超时,完美适配这种多分支等待场景- 确保元素的automationId定位准确,避免因定位错误导致等待失败
- 可根据实际界面响应速度调整
interval参数,平衡等待效率和资源消耗
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

