Как дождаться выполнения счетчика сетки с Java Explicit WebDriver Wait

У меня есть сетка на моей странице, которая была обновлена ​​с помощью различных действий (перезагрузка, сортировка, фильтрация и т. Д.). Каждый раз, когда применяется одно из действий, перед сеткой появляется счетчик, пока данные в сетке не будут перезагружены. Появление счетчика может занять от 300 до 3000 мс, а счетчик может оставаться там несколько секунд. В тех же случаях сетка перезагружалась без счетчика, но предсказать ее появление невозможно. Есть ли способ позаботиться об ожидании этого счетчика с помощью Explicit WebDriver Wait без получения исключения NoSuchElementException?


person mbeider    schedule 21.01.2014    source источник
comment
Вся идея WebDriverWait состоит в том, чтобы дождаться появления элемента на экране до истечения времени ожидания. Если ваш счетчик непредсказуем и не всегда появляется, вы можете попытаться учесть его и обработать как состояние ошибки, но я бы попытался найти другой элемент, который более согласован, есть ли другой элемент, который вы можете использовать?   -  person so cal cheesehead    schedule 22.01.2014


Ответы (2)


Используя Firebug, проверьте атрибуты счетчика. В большинстве случаев у них есть атрибут ширины / высоты. Вы можете получить значение атрибута, когда счетчик отображается, а не отображается. Затем вы можете написать логику, ожидающую, пока атрибут не получит не отображаемое значение.

person Akbar    schedule 22.01.2014
comment
Проблема в том, что у него не отображается значение до того, как оно начнется. Таким образом, нет никакого способа узнать, является ли значение до или после появления. - person mbeider; 22.01.2014

Сначала вы ждете, пока появится счетчик, затем вы ждете, пока он исчезнет.

При первом ожидании вы даете ему короткий тайм-аут (может быть, 2 секунды, может быть, 10), но не генерируете никаких исключений, если он истекает. Просто двигайтесь дальше (поскольку это, вероятно, означает, что счетчик появлялся и исчезал быстрее, чем селен мог его обнаружить).

Затем во втором ожидании дайте ему более длительный тайм-аут и вызовите исключение, если счетчик все еще присутствует в конце.

person ebeezer    schedule 10.02.2015