我正在尝试为使用 TabPanel 的 GWT 应用程序创建 WebDriver 测试。在 IDE 中单击选项卡可以正常工作(它使用 x-path 来查找选项卡)但是我无法在 JUnit 测试中使选项卡单击工作。
所有元素都有一个 debugID,包括选项卡(尽管选项卡 ID 似乎在 IDE 中也不起作用)并且我继承了com.google.gwt.user.Debug
. 我试图通过 IDE 默认的 Xpath 进行定位。
genericElement.findElement(By.xpath("//div[@id='gwt-debug-mainTabPanel']/div[2]/div/div[6]/div/div")
我已经尝试过文档中概述的代码
genericElement.findElement(By.id("gwt-debug-mainTabPanel-bar-tab6")
我也尝试过moveToelement
(clickAt
不再支持)并单击,但也失败了(除非我误解了它)。我也想避免这种情况,因为这似乎是不好的做法。
Actions builder = new Actions(driver);
genericElement = driver.findElement(By.id("gwt-debug-mainTabPanel"));
Action action = builder.moveToElement(genericElement,400, 370).click().build();
action.perform();
java.lang.UnsupportedOperationException:不支持移动到任意 X、Y 坐标。
我知道 GWT 和 Webdriver 相处得不太好——但我觉得这会有一个解决方案。任何人都可以提供任何帮助 - 有没有人实现了一个有效的 Webdriver 测试,他们在 GWT TabPanel 中单击一个选项卡?
编辑
我已经设法使用 Firebug 和 xpath 定位器定位节点(您可以添加 /..to 移动到父 gwt-TabLayoutPanelTabInner 或添加 /../.. 移动到祖父 gwt-TabLayoutPanelTabInner 并且它应该仍然工作 - 它在 IDE 中执行)
genericElement = driver.findElement(By.xpath("//div[contains(@class,'gwt-HTML') and contains(text(),'Users')]"));
但是,单击不会更改为所需的选项卡 - 似乎是一个已知问题(可能不需要 moveToElement 和 click(genericElement) - 试一试)
Actions builder = new Actions(driver);
builder.moveToElement(genericElement).click(genericElement).build().perform();
见第 3 节....这很有趣 :)