GWT 2.0 的硒测试

2023-11-26

如何使 selenium click() 的工作方式与手动鼠标单击相同?

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

我确信硒实际上正在找到正确的元素,只是没有点击它。如果您更改 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() ) - 但没有一个重现手动行为。


不幸的是,看看这个案例,我无法用 Selenium 复制点击。我看到很多人抱怨他们不能将 Selenium 与 GWT 一起使用,而其中一个比较著名的团队也遇到了这个问题。 Google Wave 开发团队已开始使用 WebDriver 来测试他们的代码。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GWT 2.0 的硒测试 的相关文章