现在在Playwright中,我们有一个expect assertions的列表,它可以重试,直到达到超时限制。现在在这个列表中,我找不到任何可以Assert文本的东西。
这是我的测试:
page.on('dialog', async (dialog) => {
expect(dialog.message()).toContain('I am a JS Alert')
await dialog.accept()
})
await page.locator('text=Click for JS Alert').click()
我希望用一些可以重试的东西来替换这个expect(dialog.message()).toContain('I am a JS Alert')
,直到超时。
3条答案
按热度按时间hsvhsicv1#
如果您期望定位器,则单个Assert有一个超时:
你也可以在全局级别设置期望超时。
如果使用对话框和方法,则没有超时,因为dialog.message()返回纯字符串,因为它侦听对话框事件。
据我所知,你能做的最好的就是用try catch,或者while循环,直到对话框消息继续所需的消息(用watchDog)。
nmpmafwu2#
最新版本的playwright 1.21允许你这样做:
新方法expect.poll等待任意条件:
poll支持大多数同步匹配器,如.toBe()、.toContain()等。
5jdjgkvh3#
有几种方法可以做到这一点,这取决于你的需要。
假设你一次只弹出一个对话框,你可以使用一个promised对话框处理程序并重试:
测试中的示例页面有一个按钮,它触发一个对话框,对话框中显示一个从0到9的随机数。我们Assert最终对话框显示数字
"1"
。更改测试以检查文本
"asdf"
,您将看到它如预期的那样失败。轮询也是可能的,并且可能比重试更精确: