如何在Playwright中验证两个操作按任意顺序完成?
在Playwright中验证两个操作按任意顺序完成的方案
直接用JavaScript的Promise.all()就能实现你要的逻辑——它会并行等待所有传入的Promise完成,完全不关心它们的执行顺序,只要所有操作都成功通过断言,测试就会通过。
具体代码示例:
// 假设你已经定义了这两个断言函数 async function expectDrawerToClose() { await expect(page.locator('.drawer')).toBeHidden({ timeout: 10000 }); } async function expectNotification() { await expect(page.locator('.notification')).toBeVisible({ timeout: 10000 }); } // 并行等待两个操作完成,顺序无关 await Promise.all([ expectDrawerToClose(), expectNotification() ]);
为什么这个方案可行?
Promise.all()会同时启动两个断言的等待逻辑,各自独立判断目标状态是否满足,不会因为其中一个操作先发生就阻塞另一个的判断。- 只要两个断言都在设置的超时时间内成功触发,不管哪个先完成,测试都会通过,完美解决你遇到的顺序随机性问题。
- 不同于
or定位器只要求满足其中一个条件,Promise.all()强制要求两个断言都必须通过,完全符合你的需求。
内容的提问来源于stack exchange,提问作者machineghost
相关产品推荐
相关产品推荐

