Ich habe einen Hyperlink auf meiner Seite. Ich versuche zu Testzwecken eine Reihe von Klicks auf den Hyperlink zu automatisieren. Gibt es eine Möglichkeit, mit JavaScript 50 Klicks auf den Hyperlink zu simulieren?
<a href="#" target="_blank" onclick="javascript:Test("Test");">MSDN</a>
Ich suche nach einem onClick-Ereignisauslöser aus dem JavaScript.
javascript
dom-events
user171523
quelle
quelle
for(
.AKTUALISIEREN
Dies war eine alte Antwort. Heutzutage sollten Sie nur Klick verwenden . Verwenden Sie dispatchEvent , um erweiterte Ereignisse auszulösen .
Ursprüngliche Antwort
Folgendes verwende ich: http://jsfiddle.net/mendesjuan/rHMCy/4/
Aktualisiert, um mit IE9 + zu arbeiten
Beachten Sie, dass ein Aufruf
fireEvent(inputField, 'change');
nicht bedeutet, dass das Eingabefeld tatsächlich geändert wird. Der typische Anwendungsfall für das Auslösen eines Änderungsereignisses besteht darin, dass Sie ein Feld programmgesteuert festlegen und möchten, dass Ereignishandler aufgerufen werden, da der Aufrufinput.value="Something"
kein Änderungsereignis auslöst.quelle
jQuery
oder nicht). Ich kann Ihnen eine aussagekräftigere Hilfe bieten, wenn Sie eine neue Frage mit dem genauen Code stellen, den Sie versucht haben, der aber nicht funktioniert hat.Was
Dies ruft genau die
onclick
Funktion von aufl
, dh wenn Sie eine mit festgelegt habenl.onclick = myFunction;
. Wenn Sie nicht eingestellt habenl.onclick
, tut es nichts. Im Gegensatz,simuliert einen Klick und löst alle Ereignishandler aus, unabhängig davon, ob sie mit
l.addEventHandler('click', myFunction);
, in HTML oder auf andere Weise hinzugefügt wurden .quelle
window
Objekt ein Klickereignis hinzufügen , wird einewindow.click
Funktion nicht auf magische Weise verfügbar gemacht .Ich schäme mich sehr, dass es so viele falsche oder unbekannte teilweise Anwendbarkeit gibt.
Der einfachste Weg, dies zu tun, ist über Chrome oder Opera (meine Beispiele verwenden Chrome) über die Konsole. Geben Sie den folgenden Code in die Konsole ein (in der Regel in einer Zeile):
Dies erzeugt das erforderliche Ergebnis
quelle
.click()
funktioniert nicht mit Android (siehe Mozilla-Dokumente , im mobilen Bereich). Sie können das Klickereignis mit folgender Methode auslösen:Aus diesem Beitrag
quelle
.click()
funktioniert nicht mit Android" In der neuesten Tabelle steht "Kompatibilität unbekannt".Verwenden Sie ein Testframework
Dies könnte hilfreich sein - http://seleniumhq.org/ - Selen ist ein automatisiertes Testsystem für Webanwendungen.
Sie können Tests mit dem Firefox-Plugin Selenium IDE erstellen
Manuelles Auslösen von Ereignissen
Um Ereignisse manuell auf die richtige Weise auszulösen, müssen Sie verschiedene Methoden für verschiedene Browser verwenden - entweder
el.dispatchEvent
oderel.fireEvent
woel
sich Ihr Ankerelement befindet. Ich glaube, für beide muss ein Ereignisobjekt erstellt werden, um übergeben zu werden.Die alternative, nicht ganz korrekte, schnelle und schmutzige Methode wäre folgende:
quelle
IE9 +
Anwendungsbeispiel:
Quelle: https://plainjs.com/javascript/events/trigger-an-event-11/
quelle
Faire Warnung:
element.onclick()
verhält sich nicht wie erwartet. Es führt nur den Code innerhalb ausonclick="" attribute
, löst jedoch kein Standardverhalten aus.Ich hatte ein ähnliches Problem mit dem Optionsfeld, das nicht aktiviert war, obwohl die
onclick
benutzerdefinierte Funktion ordnungsgemäß ausgeführt wurde. Musste hinzufügenradio.checked = "true";
, um es einzustellen. Wahrscheinlich gilt das auch für andere Elemente (nachdema.onclick()
es auch sein solltewindow.location.href = "url";
)quelle
onclick()
würde die Verwendung bedeuten, dass dasevent
Objekt nicht automatisch vom Browser definiert wird, sodass gängige Methoden wieevent.stopPropagation()
auch undefiniert sind.quelle