是否可以刷新过时的元素



>我有一个搜索页面,其中包含一个表格,该表在用户按下搜索按钮后填充搜索结果。page 对象将搜索结果表的行包装在自定义HtmlElement类中。

我在访问结果表时遇到过时的元素异常 - 正如您所期望的那样,因为它刚刚被 ajax 请求刷新。

我已经通过在执行搜索后返回页面对象的新实例来解决此问题,但我宁愿重新创建搜索结果字段。有什么办法可以做到这一点吗?

例:

@FindBy(css = "[data-viewid='Table1'] .dojoxGridRow")
List<ActivityPerformanceRow> results;
// ...
public void search() {
    search.click()
    waitForAjaxToComplete();
    // If it was a standard WebElement list I'd do something like this:
    results = driver.findElements(By.cssSelector(
                      "[data-viewid='Table1'] .dojoxGridRow"));
}

经过一番尝试,我想出了这个解决方案 - 它运行良好,但不处理 HtmlElement 名称属性。 鉴于我不使用它,我知道我现在忽略了它......

public <T extends HtmlElement> List<T> findElements(Class<T> elementClass, By by) {
    List<T> elements = new LinkedList<T>();
    for (WebElement element : driver.findElements(by)) {
        elements.add(HtmlElementLoader.createHtmlElement(elementClass, element, null));
    }
    return elements;
}

最新更新