我正在尝试使用赛普拉斯自动化Web应用程序。但是,由于需要其他来源(Iframe)的身份验证,因此无法加载该网站。有什么办法可以克服这个问题?
示例代码:
describe('Initial Cypress Tests', () => {
it('navigate to MSteams site', () => {
cy.visit('https://teams.microsoft.com/_#/')
} )
})
答案 0 :(得分:0)
不要使用cypress进行自动化,而是测试您的Web应用程序。
赛普拉斯不是通用自动化工具。
(https://docs.cypress.io/guides/references/trade-offs.html#Permanent-trade-off)。
每个柏树测试仅限于一个超级域。赛普拉斯的家伙考虑了第三方登录和用例,其中您在其他来源进行了身份验证。您可以使用他们的“食谱”向第三方进行身份验证:https://docs.cypress.io/examples/examples/recipes.html#Single-Sign-On
有多种使用赛普拉斯测试应用程序的方法,下面是一些示例:
- 存根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)