我需要 Cypress 屏幕截图等到第二次 click() 完成后

I need for Cypress screenshot to wait until after the second click() is complete

我在赛普拉斯运行以下测试:

context('Overview', () => {
  it('4.1 - From Patient Summaries Screen, click a patient name. - Should take user to the weekly Patient Overview screen.', () => {
 cy.login()

 cy.get('body div ul li a span')
   .should('exist')
   .should('be.visible')
   .contains('Patients')
   .click()

cy.get('td[data-cy=Name]')
  .should('be.visible')
  .contains('I.B. Sickly')
  .click()

cy.get('div[data-cy=headerTitle]')
  .should('be.visible')
  .screenshot() 
})
})

所以截图太早了。它是在第一次获取之后获取的。但是,最后一个块不起作用,因为它会从字面上截取 headerTitle 的屏幕截图。如果我将 .screenshot() 链接到第二个 get 块,那将不起作用,因为它会截取 contains().

内的那个患者姓名的屏幕截图

最重要的是我需要它在第二次点击后截取屏幕截图。

如果您将 .screenshot() 链接到某个元素,它将 only screenshot that element.

如果您想截取整个 window 的屏幕截图,则无需链接 .screenshot() 任何内容。只需调用 cy.screenshot()cy.screenshot() 默认捕获整个页面。

添加@agoff 已经提到的关于使用 cy.screenshot() 的内容。您可以再做两件事。

  1. 确保网页的最后一个可见元素可能是页脚或其他任何内容,这将表明页面已完全加载。

  2. 使用屏幕截图,您可以传递一个可选参数,例如 capture

cy.get('lastElementSelector', {timeout: 6000}).should('be.visible')
cy.screenshot({capture:'fullPage'})

capture 告诉要捕获 Test Runner 的哪些部分。对于元素屏幕截图捕获,此值将被忽略。有效值为 viewportfullPagerunner。当viewport时,在当前视口中捕获被测应用程序。当 fullPage 时,被测应用程序从上到下被完整捕获。当 runner 时,将捕获整个浏览器视口,包括 Cypress 命令日志。对于测试失败时自动截取的屏幕截图,捕获始终强制为运行者。

您可以在此处查看所有其他可选参数 - https://docs.cypress.io/api/commands/screenshot#Arguments

很多很好的答案都有效,但我发现我需要做的就是如下:

context('Overview', () => {
  it('4.1 - From Patient Summaries Screen, click a patient name. - Should take user to the weekly Patient Overview screen.', () => {
 cy.login()

 cy.get('body div ul li a span')
   .should('exist')
   .should('be.visible')
   .contains('Patients')
   .click()

cy.get('td[data-cy=Name]')
  .should('be.visible')
  .contains('I.B. Sickly')
  .click()

cy.get('div[data-cy=patient-name]')
  .should('be.visible') 

cy.get('main div line')
  .should('be.visible')

cy.screenshot()
})
})

所以我在那里做的是添加另一个 get() 块,显示新屏幕有一些独特的东西并且它是可见的,当它是时,截取屏幕截图。 should('be.visible') 似乎是在向 Cypress 发出信号,表明是时候截图了。