Ich tippe etwas Wert ein, bei Änderung mache ich total. Aber irgendwie wird dieses Ereignis nicht mit dem Selen-Befehl ausgelöst.
Ich habe auch versucht typeKey und typeAt .. Aber kein Erfolg. Irgendeine Abhilfe dafür?
Firefox hat einen Fehler , der verhindert, dass einige Ereignisse ausgeführt werden, während das Browserfenster nicht im Fokus ist . Dies kann ein Problem sein, wenn Sie Ihre Automatisierungstests ausführen - die möglicherweise auch dann eingeben, wenn das Fenster nicht im Fokus ist.
Um dieses Problem zu beheben, habe ich das Änderungsereignis "manuell" ausgelöst und JavaScript in meine Tests eingefügt.:
%Vor% Wie Sie vielleicht bemerkt haben, verwende ich jQuery, um das Änderungsereignis auszulösen. Wenn Sie jQuery nicht in Ihrer App verwenden, können Sie hier
Hoffe, dass es jemandem hilft.
Wenn Sie Selenium 1.x verwenden, gibt es einen fireEvent-Befehl, mit dem Sie das onChange-Ereignis manuell auslösen können, nachdem Sie den Wert eingegeben haben. Vielleicht würde das dein Problem lösen?
Ihre Lösung wird normalerweise gefunden, indem Sie den JavaScript-Code betrachten.
Eine Option, die Sie immer haben, besteht darin, den Wert einzugeben und das aktuelle OnChange-Ereignis manuell aus dem Code auszulösen.
Es gibt ein offenes Problem zu diesem Linktext Problem mit FireFox Windows ist nicht aktiv und verhindert, dass OnChange ausgelöst wird.
Versuchen Sie dies, bevor Sie den Befehl typeKeys verwenden:
%Vor% Ich hatte ein ähnliches Problem mit einer Dropdown-Liste mit Ajax.
Wenn der Benutzer ein Feld eingibt, zeigt das System AJAX div
w mit mehreren Optionen an, jede als Verknüpfung mit target='#'
Und noch schlimmer, es gab eine Funktion namens onChange () , die ein Systemflag füllte, und dieses Flag würde als Validierung für das form.submit () verwendet werden. (oh, der Schmerz)
Wie auch immer, meine Lösung dafür:
1 - Selenium sendKeys Befehl, so dass das Ajax div erscheint
2 - Warten Sie, bis die Verknüpfung mit der erwarteten Option angezeigt wird.
%Vor% 3 - selen clickAt der Link
4 - Hier ist der EINE der Fänge: manuell die Ereignisse onChange () AND blur auslösen. Achten Sie außerdem darauf, dass der Browser den Fokus auf das Feld anders legt
5 - Schließlich habe ich Selenium dazu gebracht, den ClickAt () -Befehl auf der Submit-Schaltfläche der Form auszuführen, zwischen einem mouseDown- und MouseUp-Befehl
Nicht elegant, aber es hat funktioniert.
Tags und Links automated-tests selenium selenium-ide