Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Задача - реализовать вот это
- tasks.filter(visible)
- tasks.find(exactText(“a”))
- ***************************************
- Делаем аналогично ранее реализованным find и get
- в классе родительского элемента делаем методы
- которые вернут объекты новых Lazy типов
- ***************************************
- Определись, для какого класса добавляем методы filter и find
- Посмотри, что получаем в результате - это от чего наследуем новые Lazy классы
- Посмотри, какой вид кондишена мы передаем в качестве параметра - это какой тип
- будем использовать для передаваемого в конструктор нового класса кондишена
- Также надо подумать, что вернет toString() для новых типов
- Нужно в эту фразу включить описание кондишена
- (посмотри на toString кондишена - нам столько подробностей тут не надо
- достаточно будет имя класса кондишена)
- А значит - надо научить кондишены вернуть полезную фразу для этого случая
- Подумай
- Мы уже что-то похожее делали)
- ***************************************
- Как реализовать фильтрацию списка
- Надо для каждого элемента проверить выполнение кондишена
- И сформировать новый список элементов,
- для которых этот кондишен выполняется
- Как реализовать поиск в списке
- Надо получить первый из элементов
- Который удовлетворяет условию
- ***************************************
- При проверке кондишена для элемента списка
- можно было бы использовать should
- но думать над каждым элементом списка в рамках таймаута - это очень долго
- тем более, что в начале методов
- filter и find уже есть ждущая проверка
- потому нам нужна проверка без ожиданий и повторений, как в waitFor(...).until(...)
- но по тому же принципу)
- посмотри в waitFor(...).until(...)
- наш элемент подходит, если для него
- condition.apply(this) != null
- ***************************************
- Но
- У нас WebElement
- А чтобы проверить для него - condition.apply(this)
- Нам нужен потомок LazyEntity (а еще точнее - LazyElement)
- Как это сделать
- У нас уже есть LazyWrappedWebElement
- В котором мы запоминаем Lazy-родителя (если нет - то стоит запоминать) и сам WebElement
- а можно сделать еще красивее
- на уровне LazyElement
- объявить метод boolean is(Condition<WebElement> condition)
- и реализовать его в абстрактном предке AbstractLazyElement
- суть - применить к лейзи-объекту condition.apply
- и если результат не равен нулл и не произошло исключения - то результат=true
- посмотри в waitFor(...).until(...)
- try-catch секцию и вообще работу с condition.apply
- этот метод ничего не ждет
- просто - возвращает - в данный момент -
- проходит ли проверка для конкретного лейзи-объекта
- и теперь этот класс можно будет использовать в getWrappedEntity() тех классов
- которые мы реализвали для filter и find
- ***************************************
- протестируй решение
- на todoMVC
- Включи в этот проект и адаптируй тест todoMVC
- который ранее делали - можно опять взять версию Smoke: E2E + F
- Вероятнее всего, тебе кое-каких кондишенов не хватит
- Но среди ранее реализованных тобой кондишенов в предыдущих домашках
- по селениуму есть похожие
- т е ничего в этом плане принципиально нового не будет
- *************************************
- А кроме того - скорее всего тесты будут падать)))
- нестабильно падать с Null Pointer Exception
- это - подправим на следующем шаге
- но - все равно попробуй понять - при каких обстоятельствах это происходит
Advertisement
Add Comment
Please, Sign In to add comment