如何在没有/执行InitElements的情况下获取PageFactory中的最新对象?

时间:2013-02-06 12:20:43

标签: selenium-webdriver

我在selenium框架中使用PageFactory模型(WebDriver,Java)。

测试:在应用程序中创建一个实体并等待它完成(要验证实体的状态(已完成/正在处理),我必须在创建的实体的前面验证状态图像。)

问题/查询: * *如果从进程内更改为完成,我应该如何等待特定状态? (因为整个页面在完成后没有得到刷新,只有那个图像正在刷新--AJAX / JSON调用)

***如何使用PageFactory获取最新的页面对象?我尝试过使用PageFactory.InitElements(driver,classname.class),但它无法正常工作。

* *有什么办法,我们只能刷新PageFactory Cache吗?就像SilkTest有'BrowserPage.FlushCache()'?

1 个答案:

答案 0 :(得分:8)

使用@FindBy注释定义的WebElements是有效的代理。每次使用WebElement执行操作时,它都会使用@FindBy注释中的定位器再次在页面上查找该元素。

PageFactory.InitElements(driver,classname.class)只是设置这些代理,它实际上并没有找到元素,所以你不需要一次又一次地调用它。

您可以使用@CacheLookup注释缓存单个WebElements,如果您使用它,WebElement将在您第一次使用它时被延迟评估,但从那时起它将不再被查找(这意味着您可以如果元素发生变化,则开始获取StaleElementExceptions。

最新信息保存在Selenium Wiki中:

http://code.google.com/p/selenium/wiki/PageFactory