【发布时间】:2019-03-03 15:31:31
【问题描述】:
当我需要等待一个元素变得可见时,我可以简单地将选择器调用为这样的函数:
await element.with({ visibilityCheck: true })();
但是我怎样才能等待一个元素消失呢?
【问题讨论】:
标签: testing automation automated-tests e2e-testing testcafe
当我需要等待一个元素变得可见时,我可以简单地将选择器调用为这样的函数:
await element.with({ visibilityCheck: true })();
但是我怎样才能等待一个元素消失呢?
【问题讨论】:
标签: testing automation automated-tests e2e-testing testcafe
要等待元素消失,您可以使用我们内置的断言等待机制。请参阅the documentation 了解有关其工作原理的更多信息。
import { Selector } from 'testcafe';
fixture `fixture`
.page `http://localhost/testcafe/`;
test('test 2', async t => {
//step 1
//wait for the element to disappear (assertion with timeout)
await t.expect(Selector('element').exists).notOk({ timeout: 5000 });
//next steps
});
或者你可以使用ClientFunction:
import { ClientFunction } from 'testcafe';
fixture `fixture`
.page `http://localhost/testcafe/`;
const elementVisibilityWatcher = ClientFunction(() => {
return new Promise(resolve => {
var interval = setInterval(() => {
if (document.querySelector('element'))
return;
clearInterval(interval);
resolve();
}, 100);
});
});
test('test 1', async t => {
//step 1
//wait for the element to disappear
await elementVisibilityWatcher();
//next steps
});
【讨论】:
timeout 参数定义了等待的限制。使用间隔检查条件。所以你可以将timeout设置为50秒,但是当条件满足时会执行一个动作。如果条件在 10 秒后执行,timeout 将被忽略。
当你等待一个元素接收 display:none; ::
await browser.expect( Selector(".m-loader").visible ).notOk({ timeout: 30000 });
【讨论】: