Angular Cypress.io тест с всплывающим окном Google Login

Можно ли войти в учетную запись Google с помощью Cypress.io, используя всплывающее окно аутентификации Google?

Я могу получить окно, чтобы открыть, но тогда Cypress не может определить идентификатор для поля ввода электронной почты.

Ошибка: "CypressError: Тайм-аут повторной попытки: Ожидается найти элемент: '#identifierId', но так и не найден".

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
  })

2 ответа

Решение

Это не работает из-за того, что Cypress не полностью реализовал поддержку iframe.

Однако Cypress не рекомендует посещать сторонние приложения в рамках ваших тестов. Есть много причин для этого, в том числе:

  • Это невероятно много времени и замедляет ваши тесты.
  • Сторонний сайт, возможно, изменил или обновил свой контент.
  • Сторонний сайт может иметь проблемы вне вашего контроля.
  • Сторонний сайт может обнаружить, что вы тестируете с помощью скрипта, и заблокировать вас.
  • Сторонний сайт может проводить A/B-кампании.

Сайпресс изложил минусы посещения сторонних сайтов, которые вы не контролируете, и некоторые обходные пути в их документах. Я предлагаю прочитать полное объяснение здесь.

Проверьте, видим ли элемент DOM. идентификатор не виден

Другие вопросы по тегам