我得到了表单,当我触发时单击“提交”按钮,这会刷新当前页面。之后我想做一些断言。我怎么知道那个页面完成了刷新,我可以开始搜索一个元素了?
cy.get('#formButton').click() // adds new item and refresh page
// do assertions on page
答案 0 :(得分:0)
5种方式:
1)在不刷新的情况下进行SPA,并在更改DOM后使用回调/保证;
2)设置cookie,刷新页面,每次加载页面时都使用如下条件:
if (existsRefreshCookieAfterFormSubmit()) { ...
3)只需阻止表格发送,如:
form.onsubmit = function() { return false; };
4)使用<a>
代替<button>
或<input>
5)不要使用<form>
作为输入的父级,仅使用输入。
答案 1 :(得分:0)
此解决方案是posted by @msty on a similar GitHub issues:
// Navigate / submit form
cy.click('#someButtonToNavigateOnNewPage');
cy.location('pathname', {timeout: 10000})
.should('include', '/newPage');
// Do assertions here
cy.contains('h1', 'success')
Cypress Docs的另一种解决方案是:
// Wait for the route aliased as 'getAccount' to respond
// without changing or stubbing its response
cy.server()
cy.route('/accounts/*').as('getAccount')
cy.visit('/accounts/123')
cy.wait('@getAccount').then((xhr) => {
// we can now access the low level xhr
// that contains the request body,
// response body, status, etc
})