如何使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())-但没有一个方法可以重现手动行为。
不幸的是,在这种情况下,我无法使用Selenium复制点击。我已经看到许多人抱怨他们不能将Selenium与GWT一起使用,而更著名的团队之一就遇到了这个问题。Google Wave开发团队已开始使用WebDriver来测试其代码。
现在的好处是,目前有一个合并Selenium和WebDriver的项目,因为它们各有优缺点,而且其中许多处于不同的领域,因此最终产品将是惊人的。
我相信他们可能在Google Code上拥有WebDriverBackedSelenium的工作版本,因此您所需要做的就是更新Selenium的实例化,它应该开始使用WebDriver代码来运行测试。