Можно ли обновить устаревшие элементы?

У меня есть страница поиска, которая содержит таблицу, которая заполняется результатами поиска после того, как пользователь нажимает кнопку поиска. Объект страницы переносит строки таблицы результатов поиска в пользовательский 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"));
}

1 ответ

Решение

После небольшой игры я придумал это решение - оно работает хорошо, но не касается свойства имени 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;
}
Другие вопросы по тегам