我有一个应用程序,该应用程序经常调用以用最新状态的作业来更新“作业页面”上的。 我正在编写一个赛普拉斯测试,以在作业状态显示为“已开始”时执行一项操作(单击“取消作业”)。
我的赛普拉斯代码如下:
cy.route( { method: 'POST', url: '/job-service/job/search' } ).as('searchRequest');
cy.wait('@searchRequest', { 'requestTimeout' : 10000 }).then((xhr) => {
expect(xhr.response.body.data[0]).to.have.property('status', 'Started');
});
我得到的前几个答复是这样的:
{
"data": [
{
"_id": "f00b4r",
"status": "Submitting"
}
]
}
显然,它在第一次尝试后就失败了,因为它在第一个响应上获得的状态不是预期的状态(已提交但未启动)。
AssertionError:预期{对象(_id,searchId,...)}具有 属性“状态”为“已开始”,但已获得“提交”
我想忽略这些失败,并继续等待直到得到如下响应:
{
"data": [
{
"_id": "f00b4r",
"status": "Started"
}
]
}
很抱歉,这个问题有点令人费解/令人误解。我正在学习赛普拉斯,真的很喜欢到目前为止。预先感谢您提供的所有帮助。
我尝试过的事情:
1。常规cy.get方式
我试图在包含文本“开始”的页面上获取状态元素,如下所示:
```cy.get('.qa-statusCell').should('contain', 'Started')```
但是由于页面是异步加载的,因此该元素变得过时/与DOM分离。
2。使用cypress-wait-until
我试图查看是否可以使用cypress-wait-until。我无法成功使用它,因为我找不到通过路由@alias来查看XHR响应内容的方法。