Page Factory中ElementLocatorFactory和FieldDecorator的用途是什么?

时间:2016-08-27 06:19:24

标签: selenium selenium-webdriver

有人可以使用ElementLocatorFactory解释如何在FieldDecorator中使用PageFactorySelenium吗?我无法理解,请求您以外行的方式解释这一点。

enter image description here

1 个答案:

答案 0 :(得分:9)

当您使用PageFactory时,webelements实例实际上是代理,并且在您调用方法之前必须找到元素。

获取部分封装在每个字段的ElementLocator中。 ElementLocatorFactory为每个元素提供了这些元素。该工厂需要向工厂构造函数提供SearchContext。驱动程序实现SearchContext(方法findelement)甚至是webelement。 By部分是如何查找它们的,它是通过页面对象字段上的反射API检索的。

将代理分配给字段由FieldDecorator处理,这需要ElementLocatorFactory。为每个webelement字段调用的decorate()方法返回为该字段设置的代理。当在webelement上调用方法时,它实际上在代理上被调用。代理拦截此调用以使用SearchContext.findElement方法查找实际元素,然后调用原始方法。

因此,可以创建自定义ElementLocatorFactoryFieldDecorator以传递给PageFactory

有关代码级别的说明 - http://www.alechenninger.com/2014/07/a-case-study-of-javas-dynamic-proxies_14.html