Тестирование селена GWT 2.0

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

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

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

Пример кода ниже использует веб-сайт Витрины GWT. Это пытается нажать на слово "Beethoven". При нажатии на то слово с мышью Вы будете видеть, что 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 () / Вниз () / ()) - но ни один не воспроизводит ручное поведение.

11
задан Glennn 18 January 2010 в 06:28
поделиться

4 ответа

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

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

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

6
ответ дан 3 December 2019 в 10:03
поделиться

Похоже, 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 будет более полностью включать WebDriver, и все будет снова замечательно. Но я думаю, что пока это работает.

2
ответ дан 3 December 2019 в 10:03
поделиться

Я хотел опубликовать код, который наконец работал для меня после полезных комментариев от 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");
    }
}
1
ответ дан 3 December 2019 в 10:03
поделиться

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

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

1
ответ дан 3 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: