代理无法强制转换为TestBenchElement - WebElement到TestBenchElement

时间:2017-03-20 00:41:11

标签: java selenium vaadin pageobjects test-bench

我正在使用他们的官方UI测试工具TestBench(基于Selenium)为Vaadin前端构建一个Page对象模式框架。

使用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文本不是最好的例子,但是有很多methods,仅仅在超类中就可以了。

无论是否为Page使用PageFactory或新实例化,都存在此问题。

可以找到WebElement作为检查isDisplayed()返回true。

运行时类型是TestBenchElement的一个实例:

  

com.vaadin.testbench.TestBenchElement _ _ $$ @ javassist_1 3a96d74

我想这个问题归结为,这可能吗?或者TestBench是否仅在Selenium级别(WebElement)使用Page对象模式?

如果是这种情况,则可以节省许可证的额外费用。

0 个答案:

没有答案