Testing Onbeforeunload Ereignisse von Selen
-
03-07-2019 - |
Frage
Ich versuche, einen Selen-Test für eine Web-Seite zu schreiben, die ein onbeforeunload Ereignis verwendet den Benutzer aufzufordern, vor der Abreise. Selen scheint nicht den Bestätigungsdialog zu erkennen, die aufkommt, oder einen Weg, um zu bestätigen Sie mit OK oder Abbrechen. Gibt es eine Möglichkeit, dies zu tun? Ich bin die Java Selen-Treiber verwenden, wenn das relevant.
Lösung
Sie können einen Benutzer-Erweiterung (oder nur einige JavaScript in einem storeEval usw.) schreiben, die Tests, dass window.onbeforeunload gesetzt ist, und ersetzt sie dann mit null, bevor sie von der Seite fortfahren. Hässlich, aber Sie sollten von der Seite erhalten.
Andere Tipps
Ich habe gerade dies für eine Anwendung von mir zu tun, wo die onbeforeunload
Handler eine Aufforderung bringt, wenn ein Benutzer eine Seite verlässt, während ein Dokument in einem nicht gesicherten Zustand ist. Python-Code:
driver.switch_to.alert.accept()
Das Java-Äquivalent wäre:
driver.switchTo().alert().accept();
Wenn der Alarm nicht existiert, oberhalb der Code wird mit einem NoAlertPresentException
fehlschlagen, so dass keine Notwendigkeit für einen separaten Test ist die Existenz zu überprüfen, bevor die Aufforderung zu akzeptieren.
Ich bin mit Selen 2.43.0, aber ich denke, das ist jetzt eine Zeit lang machbar gewesen.
In Fällen, in denen ich möchte nicht die Aufforderung an alle kommen, denn das ist nicht, was ich testen, betreibe ich benutzerdefinierte JavaScript im Browser window.onbeforeunload
zu setzen, bevor er die Seite null
. Ich habe dies in dem Test Teardown-Code.
Achtung: dies gibt eine alternative Lösung
Watij - http://watij.com/ - kann hier helfen. Oder wenn Sie mit Ruby vertraut sind, können watir helfen - http://wtr.rubyforge.org/ install.html
Wenn ich mit begrenzten Kontrolle konfrontiert wurde, die ich über Browser Selen hatte, wandte ich mich an MozLab Plugin, das mein Problem, wenn nur für eine Browser-Plattform.
gelöst