Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class LazyCollectionFiltered extends AbstractLazyCollection {
- /*
- http://pastebin.com/B06RqHXk
- строки 3-20
- */
- *************************************
- /*
- так расскажи мне в слеке)
- а почему я не советовала использовать condition.toString() - ты мне расскажи)
- см прошлое ревью)
- */
- **********************************
- throw new TimeoutException("\nfailed while waiting " + timeOutInMilliseconds + " seconds" +
- /*
- после значения timeOutInMilliseconds пишем - " seconds"
- поправь
- */
- ********************************
- public interface Condition<T> {
- T apply(LazyEntity<T> entity);
- boolean check(T wrappedEntity);
- }
- /*
- делаем красиво)
- сейчас в этом интерфейсе - объявлены методы
- служащие как для принятия решения - прошли-не прошли
- так и для получения результата ожидания
- нарушаем Single Responsibility Principle )
- реализуй интерфейс Matcher <T> с объявленным методом boolean check(T wrappedEntity);
- а в Condition <T> - останется apply
- Condition <T> - отнаследуй от Matcher <T>
- */
- **********************************************
- /*
- в интерфейсе LazyElement
- объяви методы
- public boolean is(Condition<WebElement> condition)
- public boolean has(Condition<WebElement> condition)
- и реализуй их в AbstractLazyElement
- это методы-синонимы
- этот метод ничего не ждет
- а лишь проверяет - выполняется ли в данный момент дла элемента - переданный кондишен
- */
- ******************************************
- /*
- ты писала - тесты работают не стабильно
- я гоняла на твоем проекте тудуэмвиси тесты
- норм все
- не падало)
- покажи или опиши проблемы - в чем проявляется не стабильность
- может - просто таймаута не хватило?
- */
- /*
- в fetchWrappedEntity()
- для классов
- LazyCollectionFoundByConditionElement
- и
- LazyCollectionFiltered
- если таки оставить вариант обхода
- for (LazyElement element : parentCollection)
- в принципе - можно применить метод is
- получится еще чуть более аккуратный код
- или - все же прислушайся к совету из прошлого ревью
- строки 234-248
- конечно - многословнее получится немного
- но - выигрыш будет на количестве действий
- пока не настаиваю
- но разумнее прислушаться к моему совету)
- важно - чтобы fetchWrappedEntity() максивально шустро работали
- оптимизировать скорость - уже на следующем шаге придется)
- ну и отладочные сообщения поубирай - с помощью которых разбирались в прошлый раз с проблемой
- */
- **************************************************
- /*
- еще немного challenge )
- в интерфейсе LazyElement
- объяви методы
- LazyCollection findAll(By innerLocator);
- LazyCollection findAll(String innerCssSelector);
- и реализуй их в AbstractLazyElement
- этот метод позволит у элемента - по селектору или локатору - получить коллекцию внутренних элементов
- отладиться можно - используя
- LazyCollection tasks = $("#todo-list").findAll("li");
- или
- LazyCollectionLazyCollection emails = $("[role='main']").findAll(".zA");
- Иногда такой метод findAll будет очень полезным
- принципы - те же
- как ты до этого реализовывала методы get, find, filter ...
- так сказать - для закрепления результатов)
- */
Advertisement
Add Comment
Please, Sign In to add comment