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 :(
要使您的代码示例正常工作,请执行以下操作:
- 从
Selector
中删除 await
关键字
- 从
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
我有一个 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 :(
要使您的代码示例正常工作,请执行以下操作:
- 从
Selector
中删除 - 从
Selector
中删除timeout
选项并将其传递给断言方法
await
关键字
...
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