【问题标题】:cypress - How can we bypass cross origin policy while automating using Cypress?cypress - 我们如何在使用 Cypress 自动化时绕过跨源策略?
【发布时间】:2019-02-27 12:45:48
【问题描述】:

我正在尝试使用 Cypress 自动化 Web 应用程序。但是,无法加载该站点,因为它需要来自另一个来源(Iframe)的身份验证。有什么办法可以克服吗?

示例代码:

describe('Initial Cypress Tests', () => {
it('navigate to MSteams site', () => {
    cy.visit('https://teams.microsoft.com/_#/')
} )

})

【问题讨论】:

    标签: javascript automation cypress


    【解决方案1】:

    不要将 cypress 用于自动化,而是用于测试您的 Web 应用程序。

    Cypress 不是通用自动化工具。

    (https://docs.cypress.io/guides/references/trade-offs.html#Permanent-trade-off).

    每个 cypress 测试仅限于一个超级域。 cypress 的人考虑了第三方登录和在不同来源进行身份验证的用例。您可以使用他们的“配方”与第三方进行身份验证:https://docs.cypress.io/examples/examples/recipes.html#Single-Sign-On

    使用 cypress 测试您的应用程序有多种不同的方法,以下是一些示例:

    • 剔除 OAuth 提供程序并完全绕过他们的 UI。您可以欺骗您的应用程序,使其相信 OAuth 提供者已将其令牌传递给您的应用程序。
    • 如果您必须获得一个真正的令牌,您可以使用cy.request() 并使用您的 OAuth 提供商提供的编程 API。这些 API 更改的频率可能更低,您可以避免诸如限制和 A/B 广告系列之类的问题。
    • 您也可以向服务器寻求帮助,而不是让您的测试代码绕过 OAuth。也许 OAuth 令牌所做的只是在您的数据库中生成一个用户。通常 OAuth 仅在开始时才有用,您的服务器会与客户端建立自己的会话。如果是这种情况,只需使用 cy.request() 直接从您的服务器获取会话并完全绕过提供程序。

    (https://docs.cypress.io/guides/references/best-practices.html#When-logging-in)

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 2019-01-23
      • 2021-12-14
      • 2021-12-19
      • 2014-03-17
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      相关资源
      最近更新 更多