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 断言中的 1 个可能参数上添加 2 个常量?
TestCafe - 如何在 testcaferc 文件中为 testGrep 提供多个正则表达式