一尘不染

GWT 2.0的selenium测试

selenium

如何使seleniumclick()与手动单击相同?

我最近将GWT从1.7.1升级到了2.0。某些selenium测试(SeleniumRC
v1.0.1,IE7)现在失败。似乎Selenium.click()方法未选择GWT
TreeItem。手动单击将使TreeItem变为蓝色(即,看起来已选中,并且在DOM中具有“ gwt-TreeItem-
selected”类属性),但是selenium测试没有。

我坚信selenium实际上是在寻找正确的元素,只是没有点击它。如果您在click方法中更改了字符串参数,则可以检查未找到元素时selenium是否引发异常。

下面的示例代码使用GWT
Showcase网站。它尝试单击单词“贝多芬”。如果用鼠标单击该词,则会看到TreeItem变成蓝色。但是,当您运行selenium测试时,它不会。

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())-但没有一个方法可以重现手动行为。


阅读 283

收藏
2020-06-26

共1个答案

一尘不染

不幸的是,在这种情况下,我无法使用Selenium复制点击。我已经看到许多人抱怨他们不能将Selenium与GWT一起使用,而更著名的团队之一就遇到了这个问题。Google
Wave开发团队已开始使用WebDriver来测试其代码。

现在的好处是,目前有一个合并Selenium和WebDriver的项目,因为它们各有优缺点,而且其中许多处于不同的领域,因此最终产品将是惊人的。

我相信他们可能在Google
Code
上拥有WebDriverBackedSelenium的工作版本,因此您所需要做的就是更新Selenium的实例化,它应该开始使用WebDriver代码来运行测试。

2020-06-26