gpt4 book ai didi

Cypress 重新加载页面直到元素可见

转载 作者:行者123 更新时间:2023-12-04 04:09:10 26 4
gpt4 key购买 nike

我有以下案例:

用户上传文件后,屏幕上有一个表格报告。问题是:表格没有自动出现,用户需要重新加载页面,如果文件已经处理过,表格会显示在屏幕上,如果仍在处理,用户需要稍等片刻再重新加载。

如何在不使用 cy.wait() 等待任意时间的情况下完成此任务。我想的是这样的:

    cy.reload().should(() => {
expect(document.querySelectorAll('table')).to.not.be.empty
})

但没有用

最佳答案

如果 should() 断言失败,则 Cypress 仅 repeats certain commands 。如您所见,reload() 不是其中之一。
我建议使用 递归 来实现重复的重新加载循环。下面是一个例子:

let remainingAttempts = 30;

function waitUntilTableExists() {
let $table = Cypress.$('table');
if ($table.length) {
// At least one table tag was found.
// Return a jQuery object.
return $table;
}

if (--remainingAttempts) {
cy.log('Table not found yet. Remaining attempts: ' + remainingAttempts);

// Requesting the page to reload (F5)
cy.reload();

// Wait a second for the server to respond and the DOM to be present.
return cy.wait(1000).then(() => {
return waitUntilTableExists();
});
}
throw Error('Table was not found.');
}

waitUntilTableExists().then($table => {
cy.log('table: ' + $table.text());
});
您可能想使用 forwhile 循环,但这不适用于 Cypress 。这是因为大多数命令不会立即执行。相反, commands are asynchronous

关于Cypress 重新加载页面直到元素可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62051641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com