当元素已存在时,为什么Testcafe等待元素出现?

时间:2018-10-09 22:58:35

标签: angular for-loop automated-tests e2e-testing testcafe

我正在使用TestCafe 0.22.0,在beforeEach中,我有以下代码:

const checkedBoxes = Selector('input[type="checkbox"]')

for (let i = 0; i < await checkedBoxes.count; i++) {
    t.click(Selector(`#product-${i} input`))
}

当我在Chrome中运行时,页面几乎立即呈现了所有内容,但是testcafe仍在等待约5秒钟,然后单击任何复选框。每当它单击一个复选框时,它都要等待5秒钟以上才能单击下一个复选框。

为什么会这样? testcafe应该可以一次检查所有这些。

这是一个有角度的6应用程序。

1 个答案:

答案 0 :(得分:2)

我无法通过您的测试代码和示例页面重现该问题:

$statement1->insert('john'); // id = 1
$statement2->insert('mary'); // id = 2

echo $statement1->lastInsertId();
// is it 1 or 2? Is this also deterministic? 

测试代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<div id="product-0">
    <input type="checkbox"/>
</div>
<div id="product-1">
    <input type="checkbox"/>
</div>
<div id="product-2">
    <input type="checkbox"/>
</div>
<div id="product-3">
    <input type="checkbox"/>
</div>
<div id="product-4">
    <input type="checkbox"/>
</div>

</body>
</html>

我看不到点击操作的任何延迟。此外,我发现您在import { Selector } from 'testcafe'; fixture `check` .page `../pages/index.html`; test('basic', async t => { const checkedBoxes = Selector('input[type="checkbox"]'); for (let i = 0; i < await checkedBoxes.count; i++) { await t.click(Selector(`#product-${i} input`)); } }); 操作之前错过了await关键字。如果您仍然遇到问题,请向我们提供证明该问题的最少示例示例。