使用Google登录弹出窗口进行Angular Cypress.io测试

使用Google登录弹出窗口进行Angular Cypress.io测试,angular,cypress,angular-test,Angular,Cypress,Angular Test,是否可以使用Google身份验证弹出窗口使用Cypress.io登录到Google帐户 我可以打开窗口,但Cypress无法检测电子邮件输入字段的ID 错误是:“CypresError:超时重试:应查找元素:'#identifierId',但从未找到它。” it('Login',function(){ cy.visit(“家”) cy.get(“#登录按钮”)。单击() cy.get(“#谷歌登录按钮”)。单击() //cy.wait(1500)//等待没有帮助 cy.get(“#identif

是否可以使用Google身份验证弹出窗口使用Cypress.io登录到Google帐户

我可以打开窗口,但Cypress无法检测电子邮件输入字段的ID

错误是:“CypresError:超时重试:应查找元素:'#identifierId',但从未找到它。”

it('Login',function(){
cy.visit(“家”)
cy.get(“#登录按钮”)。单击()
cy.get(“#谷歌登录按钮”)。单击()
//cy.wait(1500)//等待没有帮助
cy.get(“#identifierId”)

.type('user@gmail.com“)//检查DOM元素是否可见。identifierId不可见

由于Cypress未完全实现,此操作不起作用

但是,Cypress不建议在您的测试中访问第三方应用程序。原因有很多,包括:

  • 这非常耗时,而且会减慢测试速度
  • 第三方网站可能已更改或更新其内容
  • 第三方网站可能存在您无法控制的问题
  • 第三方网站可能通过脚本检测到您正在测试,并阻止您
  • 第三方站点可能正在运行A/B活动

Cypress在他们的文档中概述了访问您无法控制的第三方网站的缺点和一些解决方法。

感谢您提供的详细信息。我真的很惊讶。我没有访问任何第三方网站。我自己的应用程序使用谷歌认证,所以谷歌弹出窗口是我应用程序的一部分。可能只是语义上的问题,但由于谷歌不支持TH是我的站点的一部分,我不认为它是CyPress测试的第三方。是的,通过第三方,我们的意思是你的认证服务依赖于另一方的应用程序代码。如果谷歌在你的应用程序在本地运行的时候掉了下来或者你的互联网不工作,你的应用程序就不能工作。这是一个识别Y的好方法。你使用Cypress所谓的“第三方网站”。好吧,但恕我直言,我的项目是一个SaaS应用程序,其基本功能使用公共第三方API。我不能遵守“不使用任何第三方API”或“不依赖互联网访问”的规则。没有互联网,我的应用程序实际上无法运行。如果我说错了,我很抱歉。我并不是说您不应该使用第三方API,只是说端到端测试第三方应用程序的功能有很多缺点,通常最好让大多数测试测试您的应用程序是否与第三方API正确通信。
it('Login', function() {
    cy.visit('home')
    cy.get('#signin-button').click()
    cy.get('#google-login-button').click()
    // cy.wait(1500) // wait doesn't help
    cy.get('#identifierId')
    .type('user@gmail.com') // <<-- error here
  })