【问题标题】:cypress how to close the new window and back to main test window赛普拉斯如何关闭新窗口并返回主测试窗口
【发布时间】:2020-07-19 08:01:35
【问题描述】:

我已经编写了点击超链接然后检查新窗口 URL 的代码。

   cy.get('a[href*="newlink"]').eq(0).click()
   cy.url().should('equal', 'https://www.google.com')

如何关闭此窗口/或不关闭并返回原始主测试窗口?

【问题讨论】:

    标签: cypress


    【解决方案1】:

    这是我用来在弹出窗口之间交换的解决方案:https://github.com/jakedowns/CypressHelpers

    需要进行一些调整才能直接使用 .click 但它确实启用了 cy.openWindow 和一个新的 cy.switchWindow / cy.closeWindow

    在幕后,它使用了一个未记录的 用于上下文切换的cy.state('document')cy.state('window') 方法

    【讨论】:

    • 你知道如何点击按钮或window.open 我可以做到这一点吗?
    • @Ankita 很遗憾,我已经好几年没用过 cypress 了,我认为他们仍在努力进行更新,以便更轻松地进行跨窗口/跨域操作。当我上次离开时​​,我正在使用一个充满 iframe 的自定义页面来测试页面之间的交互。也许只是断言 href 是正确的,并跳过断言单击打开了正确的窗口。现在可能还有其他解决方法。见:github.com/jakedowns/CypressHelpers/blob/master/… 和:github.com/cypress-io/cypress/issues/…
    【解决方案2】:
    cy.go(direction, options)
    

    有关示例,请参阅documentation

    这适用于同一选项卡中的历史记录。赛普拉斯是not support multiple tabs

    【讨论】:

    • 新窗口没有启用后退按钮。通过使用返回方向,新窗口仍然保持打开状态。
    • 我想我提出了一个问题并得到了答案。 Cypress 限制不允许调用新窗口,只能在一个窗口进行测试。希望我的理解是正确的。
    • 我没有仔细阅读,并将更新我的回复以说明这一点。如果所有这些都在其他地方得到了回答,请随时删除。
    • 我添加了一个答案,它提供了一种解决窗口上下文切换的方法
    • @jakedowns 你能在按钮点击时给出解决方案
    【解决方案3】:

    你可以使用 cy.go('back')

    here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      相关资源
      最近更新 更多