如何让测试脚本暂停3秒再继续运行?剧作家

jia*_*e17 20 javascript testing functional-testing ava playwright

我正在运行一个名为“创建管理”的测试。测试会先创建admin,然后检查admin是否创建成功。

在脚本中,我有一部分代码我想等待 3 秒再继续,因为每当单击提交按钮时,网站在导航完成后需要花费 3 秒来刷新管理表(用户信息列表) 。有关更多信息,此刷新不是导航,因此我的“waitForNavigation()”不起作用。

因此,流程将是这样的:“填写表单”>“点击提交按钮”>“等待导航”>“重新加载用户表(3s)”。

如果我不等待3秒表刷新,测试将抛出错误,因为在表中找不到注册用户(我有其他脚本来查找用户)。

这是单击“保存按钮”时导航的样子: 在此输入图像描述

之后,该表需要 3 秒刷新,如下所示: 在此输入图像描述

这就是“创建”函数的样子: 在此输入图像描述

Hol*_*olf 42

Playwright 本身就具有这种能力:

await page.waitForTimeout(3000);
Run Code Online (Sandbox Code Playgroud)

有关此内容的文档位于:https ://playwright.dev/docs/api/class-page#page-wait-for-timeout


小智 6

您可以包装setTimeoutPromise并在异步函数中使用它:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
Run Code Online (Sandbox Code Playgroud)

其中ms- 延迟您想要等待的毫秒。

在您的代码中的用法:

...
await page.click('button :text-is("Save")');
await delay(3000); // <-- here we wait 3s
return username;
Run Code Online (Sandbox Code Playgroud)


小智 -1

用来setTimeout做那件事。这是一个例子

function  delayedCheck() {
  const processComplete = true; // set the right boolean here

  if ( processComplete ) {
    // Do something
  } else {
    setTimeout(delayedCheck, 3000); // try again in 3 seconds
  }
}

delayedCheck();
Run Code Online (Sandbox Code Playgroud)