代码之家  ›  专栏  ›  技术社区  ›  Daniel Kaplan

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

  •  0
  • Daniel Kaplan  · 技术社区  · 7 年前

    我正在使用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应该可以一次检查所有这些。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Alex Kamaev    7 年前

    我无法用您的测试代码和示例页重现此问题:

    <!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 关键字在 t.click 行动。如果您仍然有问题,请您提供一个最低限度的例子,以证明问题?

    推荐文章