Доброго времени суток. В общем как следует из названия не могу найти список элементов. Опишу ситуацию: есть страница, на которой есть поле для ввода ID, кнопка "Показать"(условие введённое ID). Ниже расположена таблица со списком. Одним из столбцов является ID, интересующий столбец содержит иконку, нажав на которую переходим на страницу, где есть подробное описание элемента таблицы. Так вот, я ввожу ID в поле, нажимаю на кнопку "Показать". Таблица перерисовывается и имеет теперь нужный мне элемент. Для того чтобы найти его я нахожу сначала список элементов этого столбца, имеющие класс=xfl p_AFIconOnly p_AFLeading. Далее в этом списке ищу нужный элемент с title="К списку строк". Искать по id не вариант он меняется.
public WebElement getFirstIconLastColumn(){ try{ log.debug("getFirstIconLastColumn-> ищу первую из всех активных иконок последнего столбца"); List<WebElement> list = (new WebDriverWait(driver, 20)) .until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.className("xfl p_AFIconOnly p_AFLeading"))); for(WebElement element:list){ if(element.getAttribute("title").equals("К списку строк") && element.isEnabled()) return element; } log.error("Не нашёл(TabOrders->getFirstIconLastColumn)"); return null; }catch(Exception e){log.error("Не нашёл(TabOrders->getFirstIconLastColumn)\n{}", e.getMessage());return null;} }
Selenium ругается:
Timed out after 20 seconds waiting for visibility of all elements located by By.className: xfl p_AFIconOnly p_AFLeading // Причём даже если искать по существованию Timed out after 20 seconds waiting for presence of any elements located by By.className: xfl p_AFIconOnly p_AFLeading
Код кнопки:
<div id="r1:0:rC:1:rO:1:qryId1:_search" title="" class="xfl p_AFTextOnly p_AFActionDisabled" _afrgrp="0" role="presentation"> <a href="#" onclick="this.focus();return false" data-afr-fcs="true" class="xfn" role="button"> <span class="xfv">Показать</span> </a> </div>
Не пойму почему не находит. Ищет по старому DOM, а после нажатия на кнопку смотрит на не совпадение с новыми свойствами? Тогда почему presence не работает? Походу обращается к DOM до нажатия на кнопку "Показать". Тогда, как я понимаю, нужно создавать новый экземпляр страницы. Но как взять driver для новой страницы? Просто вернуть WebDriver не помогает. Версия Selenium 2.52