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

sha*_*087 3 selenium selenium-webdriver

可有人请解释如何使用ElementLocatorFactory,并FieldDecoratorPageFactory使用Selenium?我无法理解,请求您以外行的方式解释这一点.

在此输入图像描述

Gra*_*per 8

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

获取部分封装在ElementLocator每个字段中.在ElementLocatorFactory为每个元件提供这些.这家工厂需要SearchContext提供给工厂的建设者.驱动程序实现SearchContext(方法findelement)甚至是webelement.该By是如何看待他们的一部分,是通过反射检索API的pageobject领域.

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

所以可以创建自定义ElementLocatorFactoryFieldDecorator传递给PageFactory.

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