Doc*_*Who 5 javascript cypress
我正在尝试编写一个测试,但我已经到了需要等待一些文本变得可见的地步。
基本上到目前为止,我已经上传了一个文件,然后导航到另一个页面,这个新页面只显示“正在处理..”,当文件完成检查时,它会显示“成功!”
问题是这个页面并不是每 x 秒调用一次 API 来更新文本,它只是在页面加载时执行一次,所以我想检查页面是否显示“正在处理..”,再次调用 cy.reload() 检查,调用 cy.wait(1000) 重新加载并再次检查等,直到页面显示“成功!”。
我的问题是如何检查文本是否存在而不是断言并且测试失败?
小智 4
这已经被问过几次了,简短的答案是使用 jQuery,例如
cy.visit(...)
cy.wait(1000) // in case the page is initially slow to load
const text = Cypress.$('div').text();
if (text.trim().startsWith('Processing') {
cy.wait(1000)
cy.reload()
}
Run Code Online (Sandbox Code Playgroud)
这会让你重新加载一次,但我猜你想重复这一过程直到“成功...”,对此递归似乎是重复操作直到出现正确的 DOM 的唯一方法。
function waitForText(attempt = 0) {
if (attempt > 100) { // choose cutoff point, must have this limiter
throw 'Failed'
}
cy.wait(1000);
const text = Cypress.$('div').text();
if (text.trim().startsWith('Processing') {
cy.reload();
waitForText(attempt + 1)
}
}
cy.visit(...)
waitForText()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7751 次 |
| 最近记录: |