如何在点击后等待页面完成重新加载?

时间:2018-05-28 20:30:26

标签: cypress

我得到了表单,当我触发时单击“提交”按钮,这会刷新当前页面。之后我想做一些断言。我怎么知道那个页面完成了刷新,我可以开始搜索一个元素了?

cy.get('#formButton').click() // adds new item and refresh page
// do assertions on page

2 个答案:

答案 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
})