我正在使用他们的官方 UI 测试工具 TestBench(基于 Selenium)为 Vaadin 前端构建页面对象模式框架。
使用 PageFactory,Page 对象能够懒惰地定位我需要测试与之交互的 Web 元素,但它们不允许转换为 TestBench 元素。
有很多围绕特定 Vaadin 组件构建的便捷方法,我希望使用它们但会收到类转换异常。
例子:
public class TestPage extends TestBenchTestCase {
private WebElement button;
public String getText() {
TestBenchElementCommands testElement = testBenchElement(button);
ButtonElement btn = testElement.wrap(ButtonElement.class);
btn.getCaption();
}
}
导致此异常:
java.lang.ClassCastException:com.sun.proxy.$Proxy6 无法转换为 com.vaadin.testbench.commands.TestBenchElementCommands
我正在使用 TestBenchTestCase 提供的方法来转换和包装元素。虽然获取 Button 文本不是最好的示例,但有很多方法可以单独在超类中使用。
无论我使用 PageFactory 还是新的 Page 实例化,都存在这个问题。
当对 isDisplayed() 的检查返回 true 时,可以定位 WebElement。
运行时类型是 TestBenchElement 的一个实例:
com.vaadin.testbench.TestBenchElement_$$_javassist_1@3a96d74
我想问题归结为,这可能吗?还是 TestBench 仅适用于 Selenium 级别 (WebElement) 的 Page 对象模式?
如果是这样,那么可以节省许可证的额外费用。