TestCafe:在多个测试中使用相同的选择器会返回旧的、不正确的数据

Posted

技术标签:

【中文标题】TestCafe:在多个测试中使用相同的选择器会返回旧的、不正确的数据【英文标题】:TestCafe: Using the same Selector across multiple tests is returning old, incorrect data 【发布时间】:2022-01-17 05:56:24 【问题描述】:

我有几个类似的页面,它们都根据不同的输入加载了几个标题元素。它们是自动生成的。

我正在编写一个测试网吧测试,以确认已按正确顺序为每个页面加载了正确的标题。有些页面的标题较多,有些页面的标题较少。

我的测试都遵循相同的基本模式:

test.disablePageCaching('log in and check that columns load in correct order',
    async(tc: TestController)=>
        const myPage = new MyPage(tc)
        await tc.expect(myPage.getScreen().exists).ok() // Confirm page load
        myPage.nagivateToRelevantPage();
        const headers = Selector(headerClassName)
        const expectedHeaders = ['array','of','expected','values']
        const count = await headers.count
        for (let i =0; i<count;i++)
            const text = await headers.nth(i).innerText.toLowerCase()
            await tc.expect(expectedHeaders[i].toLowerCase()).eql(text)
        

(如果您发现任何小的语法错误,请放心,这不是括号错误或变量名拼写错误的问题)

我在同一个文件中有 4 个这样的测试,我从一个跳到下一个。问题是,当我从一个文本跳到下一个文本时,我似乎保留了旧数据。

假设我的第一个测试检查了 10 个标题元素;我的 headers.count 值是 10。如果我的第二个测试只包含 3 个标题元素,我希望我的 headers.count 值是 3。相反,我的 headers.count 值仍然是 10。Test Cafe 似乎只是覆盖了前一个数据,同时保留之前测试的数据。

是否有某种选项可以告诉 Test Cafe 在测试之间清除这些旧数据?我尝试了 disablePageCaching 选项,但这对我不起作用。

【问题讨论】:

【参考方案1】:

我最终想通了;问题是我在导航到新页面后过早地收集数据。导航到新页面后,我需要致电await tc.expect(myPage.getScreen().exists).ok();这给了 test cafe 足够的时间来识别哪些数据是新的,哪些数据是旧的。

【讨论】:

以上是关于TestCafe:在多个测试中使用相同的选择器会返回旧的、不正确的数据的主要内容,如果未能解决你的问题,请参考以下文章

Promise.allSettled 中多个选择器的 TestCafe 断言似乎具有误导性

testcafe 冻结执行

如何在 Testcafe 断言中的 1 个可能参数上添加 2 个常量?

TestCafe - 如何在 testcaferc 文件中为 testGrep 提供多个正则表达式

是否可以测试多个不同用户同时登录 TestCafe 的场景?

Testcafe:能够在测试中判断 disableMultipleWindows 的值吗?