Question

J'essaie d'écrire un test Selenium pour une page Web utilisant un événement onbeforeunload pour inciter l'utilisateur à quitter son site. Sélénium ne semble pas reconnaître la boîte de dialogue de confirmation qui s’affiche ou offrir un moyen de cliquer sur OK ou sur Annuler. Y a-t-il un moyen de faire ça? J'utilise le pilote Java Selenium, si cela est pertinent.

Était-ce utile?

La solution

Vous pouvez écrire une extension utilisateur (ou juste du code JavaScript dans un storeEval, etc.) qui teste que window.onbeforeunload est défini, puis la remplace par null avant de continuer à partir de la page. Moche, mais devrait vous faire sortir de la page.

Autres conseils

Je viens de le faire pour une de mes applications où le gestionnaire onbeforeunload affiche une invite si un utilisateur quitte une page alors qu'un document est dans un état non sauvegardé. Code Python:

driver.switch_to.alert.accept()

L'équivalent Java serait:

driver.switchTo().alert().accept();

Si l'alerte n'existe pas, le code ci-dessus échouera avec une NoAlertPresentException ; il n'est donc pas nécessaire de faire un test séparé pour vérifier l'existence avant d'accepter l'invite.

J'utilise Selenium 2.43.0 mais je pense que cela est faisable depuis un certain temps maintenant.

Dans les cas où je ne souhaite pas du tout que l'invite apparaisse parce que ce n'est pas ce que je teste, j'exécute un code JavaScript personnalisé dans le navigateur pour définir window.onbeforeunload sur . null avant de quitter la page. Je mets cela dans le code de démontage du test.

Attention: cela donne une solution alternative

Watij - http://watij.com/ - peut vous aider ici. Si vous êtes à l'aise avec ruby, watir peut vous aider - http://wtr.rubyforge.org/ install.html

Quand j’ai été confronté à un contrôle limité de Selenium sur mon navigateur, je me suis tourné vers MozLab . plugin qui a résolu mon problème, ne serait-ce que pour une plate-forme de navigateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top