web-dev-qa-db-fra.com

Accéder à une nouvelle fenêtre - cypress.io

La question est aussi simple que cela. Dans Cypress, comment puis-je accéder à une nouvelle fenêtre qui s'ouvre lors de l'exécution du test.

Étapes pour recréer:

  1. Exécutez le test. Après une action, une nouvelle fenêtre apparaît (l'url est de nature dynamique).
  2. Remplissez les champs de la nouvelle fenêtre et cliquez sur quelques boutons.
  3. Une fois les actions requises terminées dans la nouvelle fenêtre, fermez la nouvelle fenêtre et revenez à la fenêtre principale.
  4. Continuez l'exécution avec la fenêtre principale.

Point d'intérêt: l'accent doit être mis sur

main window -> new window -> main window

J'ai lu peu de choses concernant l'utilisation de iframe et confirmation box, mais ici ce n'est rien de tout cela. Concerne l'accès à une toute nouvelle fenêtre. Quelque chose comme Window Handlers en sélénium. Malheureusement, je n'ai rien trouvé de similaire.

22
Kaushik NP

L'accès à de nouvelles fenêtres via Cypress n'est pas possible dans sa version actuelle.

Cependant, il existe de nombreuses façons de tester cette fonctionnalité dans Cypress maintenant. Vous pouvez diviser vos tests en plusieurs parties et être sûr que votre application est couverte.

  1. Écrivez un test pour vérifier que lors de l'exécution de l'action dans votre application, l'événement window.open Est appelé en utilisant cy.spy() pour écouter un window.open un événement.
cy.visit('http://localhost:3000', {
  onBeforeLoad(win) {
    cy.stub(win, 'open')
  })
}

// Do the action in your app like cy.get('.open-window-btn').click()

cy.window().its('open').should('be.called')
  1. Dans un nouveau test, utilisez cy.visit() pour accéder à l'URL qui se serait ouverte dans la nouvelle fenêtre, remplissez les champs et cliquez sur les boutons comme vous le feriez dans un test Cypress.
cy.visit('http://localhost:3000/new-window')

// Do the actions you want to test in the new window

Un exemple de test pleinement fonctionnel peut être trouvé ici .

30
Jennifer Shehane