0

所以现在在 Playwright 中,我们有一个期望断言列表,它可以重试直到达到超时限制。现在在那个列表中,我找不到任何可以断言文本的东西。

这是我的测试:

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')用可以重试直到超时的东西替换它。

4

1 回答 1

0

如果您是期望定位器,则单个断言会超时:

  await expect(page.locator(selector)).toHaveText('Sign in', { timeout: 10000 });

您还可以在全局级别设置预期超时。

// playwright.config.ts
import { PlaywrightTestConfig } from '@playwright/test';

const config: PlaywrightTestConfig = {
  expect: {
    timeout: 10 * 1000,
  },
};
export default config;

如果您正在使用对话框和方法,则没有超时,因为 dialog.message() 返回纯字符串,因为它侦听对话框事件。

据我所知,您可以在这里做的最好的事情是使用 try catch 或 while 循环,直到对话框消息继续所需的消息(使用 watchDog)。

于 2022-02-21T18:39:45.623 回答