我在测试开始时创建了一个测试条目,但有时在测试中访问页面时不会加载该条目。想要轮询该条目,如果不存在,请重新加载页面,然后再次检查。在文档中使用cy.get()
的递归函数示例进行了尝试,但出现错误:
Error: TypeError: move.find(...).contains is not a function
功能:
function pollForTestMove() {
cy.get('div[class="consumer-name-wrap"]')
.then((move) => {
if (
move.find('span')
.contains("test" + localStorage.getItem('randomNameString') + " user" + localStorage.getItem('randomNameString') + " (TEST)", { "matchCase": true })
)
return
cy.reload
pollForTestMove()
})
}
答案 0 :(得分:1)
要解决此特定错误,我认为使用cy.wrap
就足够了:
cy.wrap(move).find('span')...
但是,我认为带有条件测试的代码不会像您期望的那样起作用。请看看Cypress documentation about conditional testing.
希望有帮助。如果您有任何疑问,请告诉我
答案 1 :(得分:0)
你需要这样的东西。然后在您的页面中调用 pollForElement(元素中的文本名称)
pollForElement(name) {
var count = 0;
function pollElement() {
return cy.get('body').then($body => {
if ($body.text().includes(name)) {
console.log('item has been found');
return $body;
}
else {
count += 1;
cy.wait(2000);
cy.reload();
console.log('Polling for element...');
}
if(count === 10 ) {
console.log('Element not found');
assert.isFalse(true, 'Element not found')
}
return pollElement();
});
}
return pollElement();
}