等待页面加载 - Cypress

问题描述

我遇到了一个问题,因为页面未完全加载。我尝试了 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();
    })

})

这是测试的打印屏幕:

enter image description here

解决方法

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

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

与执行 cy.wait()

相比,这是一种更好的“等待”页面加载方式 ,

为了确保页面已成功加载,您可以将任何元素声明为可见。由于在页面加载后您单击了接受 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...