Селеновые испытания GWT 2.0 - PullRequest
11 голосов
/ 18 января 2010

Как сделать так, чтобы щелчок селена () работал так же, как щелчок мышью вручную?

Я недавно обновил GWT с 1.7.1 до 2.0. Некоторые тесты на селен (SeleniumRC v1.0.1, IE7) сейчас не выполняются. Похоже, что метод Selenium.click () не выбирает GWT TreeItem. Ручной щелчок заставит TreeItem стать синим (то есть выглядеть выделенным и иметь атрибут класса «gwt-TreeItem-selected» в DOM), но тест на селен - нет.

Я убежден, что селен действительно находит нужный элемент, просто не нажимая на него. Если вы измените строковый параметр в методе click, вы можете проверить, что 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 () / Down () / Up ()) - но ни один не воспроизводит поведение вручную.

Ответы [ 4 ]

6 голосов
/ 18 января 2010

К сожалению, глядя на этот случай, я не смог повторить щелчок с помощью Selenium. Я видел, как многие люди жаловались, что они не могут использовать Selenium с GWT, и одна из наиболее известных команд имеет эту проблему. Команда разработчиков Google Wave начала использовать WebDriver для тестирования своего кода.

Теперь хорошо, что в настоящее время существует проект по объединению Selenium и WebDriver, поскольку у них есть свои сильные и слабые стороны, и многие из них находятся в разных областях, поэтому конечный продукт будет потрясающим.

Я полагаю, что у них может быть рабочая версия WebDriverBackedSelenium по адресу Google Code , поэтому все, что вам нужно сделать, это обновить экземпляр Selenium, и он должен начать использовать код WebDriver для запуска вашего теста.

2 голосов
/ 19 января 2010

Кажется, что WebDriver может сделать это следующим образом.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class Example {
 public static void main(String[] args) throws InterruptedException { 
  WebDriver driver = new InternetExplorerDriver();
  driver.get("http://gwt.google.com/samples/Showcase/Showcase.html#CwTree");
  WebElement element = driver.findElement(By.id("gwt-debug-cwTree-staticTree-root-child0-content"));
  element.click();
 }
}

Я все еще хотел бы быть в состоянии сделать это с Selenium. Возможно, в будущем выпуске Selenium будет более полно включен WebDriver, и все снова будет чудесно. Но я думаю, что пока это работает.

1 голос
/ 26 мая 2010

На самом деле вам не нужно «нажимать» на эту кнопку, но вместо этого нажмите «Enter».

См. http://dingyichen.livejournal.com/23628.html

1 голос
/ 20 января 2010

Я хотел опубликовать код, который наконец-то сработал для меня, после полезных комментариев от AutomatedTester.

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.ie.InternetExplorerDriver;

import com.thoughtworks.selenium.Selenium;

public class TestTreeClick {

    public static void main(String[] args) {
        WebDriver driver = new InternetExplorerDriver();
        Selenium selenium = new WebDriverBackedSelenium(driver, "http://gwt.google.com/samples/Showcase/Showcase.html#CwTree");
        selenium.open("http://gwt.google.com/samples/Showcase/Showcase.html#CwTree");
        selenium.click("gwt-debug-cwTree-staticTree-root-child0-content");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...