Wie kann ich ein selen klicken() funktioniert genauso wie ein manueller Mausklick?Selen-Test von GWT 2.0
Ich habe kürzlich GWT von 1.7.1 auf 2.0 aktualisiert. Einige Selentests (SeleniumRC v1.0.1, IE7) scheitern jetzt. Es scheint, dass die Selenium.click() Methode kein GWT TreeItem auswählt. Ein manueller Klick wird dazu führen, dass das TreeItem blau wird (dh ausgewählt aussieht und das Klassenattribut "gwt-TreeItem-selected" im DOM hat), der Selentest jedoch nicht.
Ich bin überzeugt, dass Selen tatsächlich das richtige Element findet, nur nicht darauf klicken. Wenn Sie den String-Parameter in der Click-Methode ändern, können Sie überprüfen, ob Selen eine Ausnahme auslöst, wenn das Element nicht gefunden wird.
Der folgende Beispielcode verwendet die GWT Showcase-Website. Es versucht, auf das Wort "Beethoven" zu klicken. Wenn Sie mit der Maus auf dieses Wort klicken, wird das TreeItem blau angezeigt. Wenn Sie jedoch den Selentest durchführen, wird dies nicht der Fall sein.
package test;
import org.junit.Before;
import org.junit.Test;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
public class TestTreeClick {
static Selenium selenium = null;
@Before
public void setUp() throws Exception {
if (selenium == null) {
selenium = new DefaultSelenium("localhost", 4444, "*iexplore",
"http://gwt.google.com/samples/Showcase/Showcase.html#CwTree");
selenium.start();
}
}
@Test
public void testingClicking() {
selenium.open("http://gwt.google.com/samples/Showcase/Showcase.html#CwTree");
selenium.click("gwt-debug-cwTree-staticTree-root-child0-content");
}
}
Ich habe einige andere Methoden ausprobiert (Selenium.clickAt(), Selenium.fireEvent(), Selenium.mouseOver()/Down()/Up()) - aber nicht das manuelle Verhalten reproduzieren.
Die Selen-Funktion, die die Click-Ereignisse tatsächlich feuert ist triggerMouseEvent in Selen-Kern/src/main/resources/core/scripts/Selen-browserbot.js. Der Großteil des Codes erstellt ein Ereignisobjekt und ruft dann element.dispatchEvent (event) auf. – John