Перейти к содержимому

Фотография

Selenium не на ходит список элементов

visibilityOfAllElementsLocate

  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 Serjant6993

Serjant6993

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 05 марта 2020 - 06:30

Доброго времени суток. В общем как следует из названия не могу найти список элементов. Опишу ситуацию: есть страница, на которой есть поле для ввода 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


  • 0

#2 Serjant6993

Serjant6993

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 12 марта 2020 - 13:34

Решил речез stalenessOf


  • 1


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных