【问题标题】:Cypress loses test scenario after quitting from iframe赛普拉斯从 iframe 退出后失去了测试场景
【发布时间】:2022-06-10 21:41:36
【问题描述】:

我有 iframe 用于付款,付款成功后我需要点击“返回申请”按钮。这是一个问题。按钮在应用程序的href 属性中有一个新链接。单击此按钮后,Cypress 似乎丢失了测试场景,浏览器窗口左侧不再有 Cypress 步骤。而且它没有进一步的步骤。

如何处理这种情况?如何让 Cypress 按场景持续运行?

【问题讨论】:

  • 你能把cy.visit()重复到baseUrl而不是cy.go('back')吗?或cy.visit(href).
  • 请提供更多信息,包括涉及的代码和网址。
  • @Fody,是的,这种解决方法有效。但它不遵循用户行为,因为没有点击按钮。 cy.iframe(locator) .find(element) .invoke('attr', 'href').then(href => { cy.visit(href) });
  • 我猜您只需要确认href 与预期匹配即可。试图思考会发生什么回归,这是最明显的(href 更改为不正确的内容)。
  • 您可以看到here 存根window.location.replace 的示例并单击测试,然后检查存根被调用。但取决于应用程序的导航方式。我也必须存根window.location.assign

标签: cypress cypress-iframe


【解决方案1】:

不确定这是否适合您的测试,但您可以使用 cy.intercept() 存根导航。

const href = 'url-from-link-href'

cy.location().then(loc => {  

  cy.intercept({url: href}, (req => {
    expect(req.url).to.eq(href)  // confirms href seen on intercepted network call
    req.url = loc.href           // stop navigation, remain at original loc
  })).as('redirect')

  cy.get(`a[href="${href}"]`)
    .click()                     // click the link
  cy.wait('@redirect')           // confirms intercept caught the redirect

  cy.visit(href)
  ... 
})

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 2021-11-06
    • 2019-12-27
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 2021-10-20
    • 2020-05-16
    相关资源
    最近更新 更多