Как сделать селен-щелчок() работать так же, как ручной щелчок мыши?Selenium Testing of GWT 2.0
Я недавно обновил GWT с 1.7.1 до 2.0. Некоторые тесты селена (SeleniumRC v1.0.1, IE7) теперь терпят неудачу. Кажется, что метод Selenium.click() не выбирает GWT TreeItem. Ручной щелчок приведет к тому, что TreeItem станет синим (т. Е. Выберите выбранный и у вас есть атрибут класса «gwt-TreeItem-selected» в DOM), но тест selenium этого не делает.
Я убежден, что селен действительно находит правильный элемент, просто не нажимая на него. Если вы измените параметр строки в методе кликов, вы можете проверить, что селен выдает исключение, когда элемент не найден.
В приведенном ниже примере используется веб-сайт GWT Showcase. Он пытается щелкнуть по слову «Бетховен». Если вы нажмете на это слово мышью, вы увидите, что TreeItem синий. Однако, когда вы запускаете тест селена, он не будет.
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");
}
}
Я пробовал некоторые другие методы (Selenium.clickAt(), Selenium.fireEvent(), Selenium.mouseOver()/вниз()/Up()) - но ни один не воспроизвести вручную поведение.
Функция селеном, который фактически увольняет клик события является triggerMouseEvent в селеном ядра/SRC/основные/ресурсы/ядра/скриптов/селеном-browserbot.js. Большая часть кода создает объект события, а затем вызывает element.dispatchEvent (событие). – John