Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

102
Visualizações
No se puede acceder al diálogo modal en Cypress

Estoy tratando de acceder a modal-dialogue usando cypress, lo que generalmente sucede es que cuando accede a la URL base, después de 5-6 segundos, navegará al usuario a modal-dialogue, donde el usuario debe iniciar sesión.

siguiente es el nombre de la clase de diálogo:

 <div class = "modal-dialog">

y estoy tratando de obtener acceso al campo de dirección de correo electrónico:

Ver captura de pantalla de la página

captura de pantalla del cuadro de diálogo de autenticación y la salida de devtools

Mientras usa el siguiente código:

 describe('Login', function(){ it('Login Successfully', function(){ const urlRedirects = []; cy.visit('https://app.staging.showcare.io/product-showcase') cy.get('.modal-dialog').should('be.visible').then(($dialog)=>{ cy.wrap($dialog).find('#signInFormUsername').click() }); }) })

por lo que estoy recibiendo el siguiente error:

 Cypress detected a cross origin error happened on page load: > Blocked a frame with origin "https://app.staging.showcare.io" from accessing a cross-origin frame. Before the page load, you were bound to the origin policy: > https://showcare.io A cross origin error happens when your application navigates to a new URL which does not match the origin policy above. A new URL does not match the origin policy if the 'protocol', 'port' (if specified), and/or 'host' (unless of the same superdomain) are different. Cypress does not allow you to navigate to a different origin URL within a single test. You may need to restructure some of your test code to avoid this problem. Alternatively you can also disable Chrome Web Security in Chromium-based browsers which will turn off this restriction by setting { chromeWebSecurity: false } in cypress.json.

¡¿Puede alguien ayudarme?!

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Esta prueba funciona

 cy.visit('https://app.staging.showcare.io/product-showcase/login') cy.get('.modal-dialog').should('be.visible') cy.get('#signInFormUsername', { timeout: 10000 }).eq(0) .click({ force: true })

Hay una advertencia de que hay dos #signInFormUsername , así que agregue .eq(0) para asegurarse de hacer clic en el correcto.

Además, el control tiene un padre con display: none , por lo que se necesita { force: true } en .click() .

Tenga en cuenta que deberá reiniciar el ejecutor de pruebas de Cypress después de configurar "chromeWebSecurity": false .


La secuencia completa de inicio de sesión

 cy.visit('https://app.staging.showcare.io/product-showcase/login') cy.get('.modal-dialog').should('be.visible') cy.get('#signInFormUsername', { timeout: 10000 }).eq(0) .type('userName', { force: true }) cy.get('#signInFormPassword').eq(0) .type('password', { force: true }) cy.get('[name="signInSubmitButton"]').eq(0) .click({ force: true })

La URL de la página del formulario de inicio de sesión es (la parte inicial)

 https://vep-staging.auth...amazoncognito.com/login?...&redirect_uri=https%3A%2F%2Fapp.staging.showcare.io%2Fproduct-showcase&...

y ese parámetro redirect_uri debería enviarlo de vuelta a https://app.staging.showcare.io/product-showcase después de iniciar sesión correctamente.

Si no, puede hacer la parte de inicio de sesión en beforeEach() y luego visitar la página principal en la prueba. Se debe almacenar un token de inicio de sesión para usted en el paso de inicio de sesión.

Además, envuelva el código en un cy.session() para iniciar sesión solo una vez y conserve el token para todas las pruebas (lo mismo que sucede con un usuario que inicia sesión y hace varias cosas en una sesión).

la prueba completa,

 Cypress.config('experimentalSessionSupport', true) // set this flag beforeEach(() => { cy.session('mySession', () => { // preserve the login across all tests cy.visit('https://app.staging.showcare.io/product-showcase/login') cy.get('.modal-dialog').should('be.visible') cy.get('#signInFormUsername', { timeout: 10000 }).eq(0) . type('userName', { force: true }) cy.get('#signInFormPassword').eq(0) .type('password', { force: true }) cy.get('[name="signInSubmitButton"]').eq(0) .click({ force: true }) }) }) it('tests the app main page after login', () => { // should be logged in here, so visit main page cy.visit('https://app.staging.showcare.io/product-showcase') // test the main page, eg cy.get('nav').contains('Homepage') })
about 4 years ago · Juan Pablo Isaza Relatório

0

Vaya a su archivo cypress.json y escriba:

 { chromeWebSecurity: false }

Esto deshabilitará los errores de origen cruzado.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda