如何等待页面完全加载

时间:2019-07-10 14:33:54

标签: javascript testing wait cypress

我正在使用Cypress测试我的水疗中心。有时页面显示很快,有时却很慢。我需要能够检查在页面加载后将显示的按钮或文本,但不想等待永恒。

我使用的等待时间过长,但希望测试运行得更快。

let targeturl = 'http:\\something.com'
let longwait = 2500

describe('Update Case', () => {
  it('Create Case', () => {   
    cy.visit(targeturl)
    cy.wait(longwait)
    cy.get('button').contains('Create').click()

我希望能够设置一个等待,直到显示“创建”按钮。

2 个答案:

答案 0 :(得分:0)

默认情况下,赛普拉斯将在继续测试之前等待页面加载所有资源。您的cy.wait()不需要。 cy.visit()的默认超时为60秒。

此外,cy.get()将重试找到您的元素,直到该元素存在。默认超时是4秒,但是您可以增加它。

通常需要这样的东西

describe('Update Case', () => {
  it('Create Case', () => {   
    cy.visit(targeturl)
    cy.get('button').contains('Create').click()

如果您发现这不起作用,也许是因为您的页面在加载所有资源后需要花费4秒钟以上的时间来呈现,那么您可以执行以下操作:

describe('Update Case', () => {
  it('Create Case', () => {   
    cy.visit(targeturl)
    // wait up to 30 seconds for some element to exist before continuing the test
    cy.get('.some-element-in-your-app-that-only-exists-once-page-has-loaded', { timeout: 30000 })
    cy.get('button').contains('Create').click()

通常,您永远不需要使用cy.wait()来将测试延迟一定的毫秒数。这样做几乎总是一个坏习惯。

答案 1 :(得分:0)

我认为您可能要使用inter.broker.protocol.version的{​​{1}}选项:

timeout

我记得我过去也遇到过类似的问题,当时的Github issue为我提供了一些有用的信息。