12 Stimmen

Testen von onbeforeunload-Ereignissen aus Selenium

Ich versuche, einen Selenium-Test für eine Webseite zu schreiben, die ein onbeforeunload-Ereignis verwendet, um den Benutzer vor dem Verlassen aufzufordern. Selenium scheint den Bestätigungsdialog, der erscheint, nicht zu erkennen oder eine Möglichkeit zu bieten, OK oder Cancel zu drücken. Gibt es eine Möglichkeit, dies zu tun? Ich verwende den Java Selenium-Treiber, falls das relevant ist.

4voto

Thom Punkte 2633

Sie könnten eine Benutzererweiterung schreiben (oder einfach nur etwas JavaScript in einem storeEval usw.), die prüft, ob window.onbeforeunload gesetzt ist, und es dann durch null ersetzt, bevor Sie mit der Seite fortfahren. Hässlich, aber es sollte Sie von der Seite wegbringen.

0 Stimmen

Ich habe nicht am Ende tun dies (meine Anforderungen geändert, so dass ich besser weg mit einem regulären Alarm sowieso), aber das sieht aus wie es den Trick tun würde, und ist in der Nähe, wie Selenium Tests für andere Alerts behandelt.

0 Stimmen

War es nur eine Frage des Hinzufügens js_eval "window.onbeforeunload=null" vor einer Öffnung für mich. (selenium-client in Ruby, aber Sie sollten in der Lage sein, leicht in andere Sprachen zu übersetzen)

1voto

Louis Punkte 137472

Ich musste dies gerade für eine meiner Anwendungen tun, bei der die onbeforeunload wird eine Eingabeaufforderung angezeigt, wenn ein Benutzer eine Seite verlässt, während sich das Dokument in einem ungesicherten Zustand befindet. Python-Code:

driver.switch_to.alert.accept()

Das Java-Äquivalent würde lauten:

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

Wenn die Meldung nicht vorhanden ist, schlägt der obige Code mit einer NoAlertPresentException Es ist also kein separater Test erforderlich, um die Existenz zu prüfen, bevor die Aufforderung akzeptiert wird.

Ich verwende Selenium 2.43.0, aber ich denke, das ist schon seit einer Weile machbar.

In Fällen, in denen ich nicht möchte, dass die Eingabeaufforderung überhaupt erscheint, weil ich das nicht teste, führe ich benutzerdefiniertes JavaScript im Browser aus, um die window.onbeforeunload a null bevor Sie die Seite verlassen. Ich habe dies in den Code für den Testabbau aufgenommen.

1voto

J07H15H Punkte 11

Stand vor dem gleichen Problem mit "beforeunlaod" event listner, LUMINUS ! ein Chrome-Addon, das mir hilft, blockieren Sie einfach die Ereignis-Listener in das Plugin, das ist alles.

0voto

dpavlin Punkte 1292

Als ich mit der begrenzten Kontrolle, die ich über den Browser mit Selenium hatte, konfrontiert wurde, wandte ich mich an MozLab Plugin, das mein Problem gelöst hat, wenn auch nur für eine Browserplattform.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X