Simulation eines Mausclicks
Andreas Riegler
- javascript
0 Sven Rautenberg1 molily
0 wahsaga0 Sven Rautenberg0 wahsaga
0 molily
0 molily
Hallo allerseits!
Ist es mit Javascript möglich, auf beliebige Elemente (z.b. <td>) einen Mausclick zu simulieren?
Habe jetzt schon einiges probiert, aber irgendwie will einfach nichts funktionieren :(
Moin!
Ist es mit Javascript möglich, auf beliebige Elemente (z.b. <td>) einen Mausclick zu simulieren?
Habe jetzt schon einiges probiert, aber irgendwie will einfach nichts funktionieren :(
Was bewirkt denn diese Simulation? In der Regel sorgt ein Mausklick ja doch nur dafür, dass ein damit verbundener Javascript-Code ausgeführt wird.
Wenn du aber schon mit Javascript die Kontrolle hast, dann kannst du den Code ja auch direkt ausführen, und mußt nicht noch erst klicken.
- Sven Rautenberg
Durch den click wird ein input Feld befüllt. Da es sich dabei um ein Programm zum testen von websites handelt, würde ich gerne den Userclick simulieren, um zu kontrollieren, ob sich das td richtig verhält.
Moin!
Ist es mit Javascript möglich, auf beliebige Elemente (z.b. <td>) einen Mausclick zu simulieren?
Habe jetzt schon einiges probiert, aber irgendwie will einfach nichts funktionieren :(
Was bewirkt denn diese Simulation? In der Regel sorgt ein Mausklick ja doch nur dafür, dass ein damit verbundener Javascript-Code ausgeführt wird.
Wenn du aber schon mit Javascript die Kontrolle hast, dann kannst du den Code ja auch direkt ausführen, und mußt nicht noch erst klicken.
- Sven Rautenberg
Moin!
Durch den click wird ein input Feld befüllt. Da es sich dabei um ein Programm zum testen von websites handelt, würde ich gerne den Userclick simulieren, um zu kontrollieren, ob sich das td richtig verhält.
Erzähl mehr! UI-Testing ist zum einen sehr interessant, zum anderen aber ziemlich schwierig, insbesondere im Browser.
Was hast du denn da für ein Konstrukt gebaut, dass UI-Tests im Browser macht?
- Sven Rautenberg
Ich verwende dazu ein fertiges open source produkt namens selenium core.
Und da kann man eben eigenständig Sachen in Javascript dazuprogrammieren (was bis dato immer super funktioniert hat). Allerdings stoße ich bei dem Problem jetzt an meine Grenzen. Irgendwie muss es doch möglich sein, eine Art "click" für alle möglichen Felder simulieren zu können oder täusch ich mich da?
Moin!
Durch den click wird ein input Feld befüllt. Da es sich dabei um ein Programm zum testen von websites handelt, würde ich gerne den Userclick simulieren, um zu kontrollieren, ob sich das td richtig verhält.
Erzähl mehr! UI-Testing ist zum einen sehr interessant, zum anderen aber ziemlich schwierig, insbesondere im Browser.
Was hast du denn da für ein Konstrukt gebaut, dass UI-Tests im Browser macht?
- Sven Rautenberg
Bitte kein Tofu
Irgendwie muss es doch möglich sein, eine Art "click" für alle möglichen Felder simulieren zu können oder täusch ich mich da?
Irgendwie ist es möglich, du kannst z.b. die click() Methode aufrufen, ich bin aber nicht sicher ob das in alle Browsern funktioniert. Evtl. geht auch onlick()
Struppi.
Hallo!
Evtl. geht auch onlick()
http://community.de.selfhtml.org/zitatesammlung/zitat350 ;-)
ciao, ww
Moin!
Ich verwende dazu ein fertiges open source produkt namens selenium core.
Interessante Sache. Was man mit Javascript so alles machen kann...
Und da kann man eben eigenständig Sachen in Javascript dazuprogrammieren (was bis dato immer super funktioniert hat). Allerdings stoße ich bei dem Problem jetzt an meine Grenzen. Irgendwie muss es doch möglich sein, eine Art "click" für alle möglichen Felder simulieren zu können oder täusch ich mich da?
Die Frage ist für mich jetzt: Was willst du genau tun? In deiner Applikation (die auch ohne Selenium funktionieren muß) den Klick simulieren, oder in Selenium testen, was passiert, wenn der User (oder eben jetzt Selenium) klickt?
PS: Lass doch bitte das Fullquote unten weg, das stört. TOFU mag hier keiner gern.
- Sven Rautenberg
Hallo,
Ist es mit Javascript möglich, auf beliebige Elemente (z.b. <td>) einen Mausclick zu simulieren?
Nein. Du kannst zwar synthetische Events erzeugen und an bestimmten Elementen losschicken, aber diese feuern *keine* JavaScript-Event-Handler und lösen auch nicht die Aktion aus, die der Browser bei einem echten Event ausführen würde.
Wenn du Event-Handler über das Schema element.onevent = handler; vergeben hast, reicht wie gesagt element.onevent(). Bei komplizierterem Event-Handling (addEventListener oder attachEvent) geht das aber nicht.
Mathias
hi,
Wenn du Event-Handler über das Schema element.onevent = handler; vergeben hast, reicht wie gesagt element.onevent(). Bei komplizierterem Event-Handling (addEventListener oder attachEvent) geht das aber nicht.
Geckos und Opera unterstützen doch dispatchEvent.
http://developer.mozilla.org/en/docs/DOM:element.dispatchEvent hat auch ein Beispiel, wie man damit den Klick auf eine Checkbox simuliert.
gruß,
wahsaga
Moin!
Wenn du Event-Handler über das Schema element.onevent = handler; vergeben hast, reicht wie gesagt element.onevent(). Bei komplizierterem Event-Handling (addEventListener oder attachEvent) geht das aber nicht.
Geckos und Opera unterstützen doch dispatchEvent.
http://developer.mozilla.org/en/docs/DOM:element.dispatchEvent hat auch ein Beispiel, wie man damit den Klick auf eine Checkbox simuliert.
Nun ja, da sich Andreas nicht mehr meldet, werden wir scheinbar nie erfahren, was er denn nun eigentlich benötigt.
Aber laut Doku zu Selenium Core kann man dort einfach "click" aufrufen und als locator nicht nur einen Link (mit href-Ziel), sondern jedes im DOM-Baum befindliche Element angeben. Sei es über einen Identifier (id oder name), über XPath, über getElementByWhatever, über CSS-Klassen...
- Sven Rautenberg
hi,
Aber laut Doku zu Selenium Core kann man dort einfach "click" aufrufen
Und täglich grüßt das Murmeltier :-)
gruß,
wahsaga
Hallo,
Geckos und Opera unterstützen doch dispatchEvent.
Ja, das sind die besagten synthetischen Events. Dass diese auch wirklich die Standardaktion auslösen, hatte ich nicht in Erinnerung. Scheint aber in Opera und Firefox glücklicherweise der Fall zu sein, da hatte ich mich wohl einfach geirrt.
IE kann sowas im Grunde auch über fireEvent. Das scheint auch die Handler bzw. die Standardaktion auszulösen. Gut zu wissen - dann nehme ich alles zurück und behaupte das Gegenteil. ;)
Mathias
IE kann sowas im Grunde auch über fireEvent. Das scheint auch die Handler bzw. die Standardaktion auszulösen.
Stimmt auch nicht ganz, z.B. die Standardaktion eines Hyperlinks wird nicht ausgelöst:
<a href="bla.html" id="link">link</a>
document.getElementById("link").fireEvent("onclick");
(Hier ginge natürlich document.getElementById("link").click();)
fireEvent löst anscheinend nur selbst gesetzte Event-Handler aus, ob über Attribute, .onevent-Eigenschaften oder attachEvent gesetzt.
Mathias