首页 > 解决方案 > 如何在继续运行之前暂停测试脚本 3 秒?剧作家

问题描述

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

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

因此,过程将是:'填写表格'>'单击提交按钮'>'等待导航'>'重新加载用户表(3s)。

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

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

之后,表格需要 3 秒刷新,它看起来像: 在此处输入图像描述

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

标签: javascripttestingfunctional-testingplaywrightava

解决方案


我创建了一个名为“delayChecked()”的函数来将脚本延迟 3 秒。但它并没有像我预期的那样工作。

async function delayedCheck() {
    // Refresh the table data required 3 seconds.
    // Therefore, delay the scripts for 3 seconds.
    let process_complete = false;

    if (!process_complete) {
        setTimeout(() => {
            process_complete = true;
        }, 3000);
    }
}

export async function create(page: Page) {
    await openUserTabOn(page);

    const username = NAME_BASE + suffixify();

    await page.click('text=New');
    await page.fill('[placeholder="Name here..."]', 'testing123');
    await page.fill('[placeholder="Username here..."]', username);
    await page.fill('[placeholder="Password here..."]', 'xe123456');
    await page.click('[role="listbox"]:has-text("admin")');
    await page.click('[role="option"]:has-text("admin")');
    await page.click('button :text-is("Save")');
    await delayedCheck();
    return username;
};

这里可能是什么问题?


推荐阅读