Selector 的 Testcafe .parent() 在超时前偶尔会失败

Testcafe .parent() of Selector sporadically fails before timeout

我有一个 TestCafe 测试,用于检查 Selector 的父级是否存在,并且每隔一段时间它都会以某种方式失败。这是相关代码:

logWithTimestamp("Starts...");  // Prints "[2020-12-23T12:02:04.476Z] Starts..."
let state = await Selector('#indberetningsflow-knap-trin-stamdata', {timeout: 30000}).parent().exists;
logWithTimestamp(`State: ${state}`);  // Prints "[2020-12-23T12:02:04.618Z] State: false"
await t.expect(state).ok()  // Sometimes fails

如您所见,它在不到 200 毫秒后失败,即使超时明确设置为 30000。现在,我有一个想法,当找到选择器时它可能会失败,但尚未加载父级.如果是这样,为什么 TestCafe 不等待 parent 出现,我该怎么办?

编辑

我又做了一个实验,要么是 TestCafe 有问题,要么是我没有理解基本的东西,但怎么会在 30 毫秒后就失败了?

logMedTidsstempel("Starts...");  // Prints "[2020-12-23T12:42:15.041Z] Starts..."
let state = await Selector('#indberetningsflow-knap-trin-stamdata', {timeout: 30000}).exists;
logMedTidsstempel("Found child."); // Prints "[2020-12-23T12:42:15.072Z] Found child."
await t.expect(state).ok();  // <- fails :(

要使您的代码示例正常工作,请执行以下操作:

  1. Selector
  2. 中删除 await 关键字
  3. Selector中删除timeout选项并将其传递给断言方法
...
let state = Selector('#indberetningsflow-knap-trin-stamdata').exists;
await t.expect(state).ok({timeout: 30000});
...

您可能还希望参考以下帮助主题:https://devexpress.github.io/testcafe/documentation/guides/basic-guides/select-page-elements.html#selector-timeout