【问题标题】:Waiting for a page to load - Cypress等待页面加载 - 赛普拉斯
【发布时间】:2021-03-07 11:44:10
【问题描述】:

我遇到了一个问题,因为页面没有完全加载。我尝试了cy.wait(1000) 方法,我认为这不是一个好的解决方案,但仍然无法正常工作,页面未完全加载。

这是我要测试的网站https://www.24mx.ie/。这 代码在文件homePage.js中。

class HomePage {
  static loadHomePage() {
    cy.visit(Cypress.env('url') + '.ie/');
    cy.wait(1000)      
  }

  static acceptCookies() {
    cy.get('div.m-button.m-button--navigation.m-button--xs.qa-consent-agree-btn.ng-tns-c95-8').click();
  }
}

export default HomePage

文件 homePage.spec.js 中的代码

import HomePage from '../pageObjects/homePage'

describe('Home Page Test', function () {
    it('Home Page TC', function () {
        HomePage.loadHomePage();
    })

    it('Accepting Cookies TC', function () {
        HomePage.acceptCookies();
    })

})

这是测试的打印屏幕:

【问题讨论】:

  • 那么,测试在哪里失败了?如果.acceptCookies() 成功,您应该通过断言其中一个产品来继续测试。测试完成后,赛普拉斯可能会停止更新屏幕(正如@Mikkel 所说)。

标签: javascript testing automated-tests cypress pageload


【解决方案1】:

为确保页面已成功加载,您可以将任何元素声明为可见。由于在页面加载后您单击了接受 cookie 按钮,我建议您断言与可见相同,例如:

class HomePage {
  static loadHomePage() {
    cy.visit(Cypress.env('url') + '.ie/');
    cy.get('[class*=qa-consent-agree-btn]', {
      timeout: 5000
    }).should('be.visible') //Make sure Cookie Accept button is visible with timeout of 5 seconds. You can increase timeout as required.     
    }

    static acceptCookies() {
      cy.get('[class*=qa-consent-agree-btn]').click();
    }
  }

  export default HomePage

【讨论】:

  • 谢谢,页面仍未完全加载。
  • @Eni 这会返回什么 - Cypress.env('url')
  • 你能把它改成https://www.24mx。那我觉得应该可以了。
  • 你的 cypress 版本是多少?
【解决方案2】:

您应该只执行 cy.get().should() 以使 Cypress 等待页面上出现某些内容。

如果页面正忙于处理 API 请求,您可以对一个或多个 API 调用执行 cy.intercept(),然后等待它们。这将在您等待元素出现之前为您争取一些时间。您可以查看 Chrome 调试工具中的网络选项卡,以查看页面正在发出的 API 请求。我会选择一个需要一些时间来加载的,然后等待。

这是一种比cy.wait()更好的“等待”页面加载方式

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 2022-10-02
    • 2019-12-14
    • 2020-07-02
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    相关资源
    最近更新 更多