0

我正在使用他们的官方 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 对象模式?

如果是这样,那么可以节省许可证的额外费用。

4

0 回答 0