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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:30:05