Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public LazyElement setValue(String text) {
- this.clear();
- this.sendKeys(text);
- return this;
- }
- /*
- тут лучше не использовать уже реалищованные this.clear() и this.sendKeys(text)
- а реализовать свою команду
- мы оптимизируем скорость - и ддна команда отработает быстрее 2-ух команд
- если в методах pressEnter() и pressEscape() - это оправдано - т к одна команда вызывается
- то вот тут лучше свою реализовать для лучшей скорости работы
- */
- ***************************
- @Override
- public boolean isDisplayed() {
- // waitFor(this).until(present());
- // return getWrappedEntity().isDisplayed();
- withWaitFor(this, present()).run(new Command<WebElement>() {
- @Override
- public WebElement run(WebElement wrappedEntity) {
- wrappedEntity.isDisplayed();
- return wrappedEntity;
- }
- });
- return false;
- }
- /*
- нам надо вернуть результат isDisplayed()
- чтобы это сделать - нужно оперировать командой Command<Boolean>
- и возвращать результат wrappedEntity.isDisplayed()
- посмотри - выше ты реализовывала для строковых результатов
- тут - точно так же, только для Boolean
- то же самое и для других методов, которые boolean возвращают
- еще момент
- я бы имя параметра метода run - сделала попроще -
- не run(WebElement wrappedEntity)
- а run(WebElement element)
- так легче будет читать код
- да и легче увидеть - что внутри команды - ты именно этип параметром-элементом оперируешь
- т к wrappedEntity и getWrappedEntity(() - похожи
- можно просто не заметить - как внутри команды используешь getWrappedEntity()
- что делать не нужно
- касается всех методов
- */
- **************************
- @Override
- public LazyElement hover() {
- // waitFor(this).until(visible());
- // actions().moveToElement(getWrappedEntity()).perform();
- // getWrappedEntity().getText();
- // return this;
- withWaitFor(this, visible()).run(new Command<WebElement>() {
- @Override
- public WebElement run(WebElement wrappedEntity) {
- actions().moveToElement(wrappedEntity).perform();
- getWrappedEntity().getText();
- return wrappedEntity;
- }
- });
- return this;
- }
- /*
- а зачем тут getWrappedEntity().getText()?
- вообще - избегай внутри команды такое использовать - посмотри -
- как мы с командой в withWaitFor работаем
- в run уже элемент есть
- с ним и работай
- и лишнего - не делай
- комментарии убирай лишние
- уже работаем над окончательной чистой версией
- */
- *************************
- @Override
- public Point getLocation() {
- // waitFor(this).until(visible());
- // return getWrappedEntity().getLocation();
- withWaitFor(this, visible()).run(new Command<WebElement>() {
- @Override
- public WebElement run(WebElement wrappedEntity) {
- wrappedEntity.getLocation();
- return wrappedEntity;
- }
- });
- return null;
- }
- /*
- а какой смысл что-то делать - если в итоге вернем null?
- в результате - нам надо вернуть значение типа Point
- исходим от сигнатуры метода - который реализовываем
- потому - нужна команда типа Command<Point>
- которая вернет это значение вызовет getLocation() у вебэлемента
- собственно - в getSize() и getRect() и даже в getScreenshotAs - где было непросто сориентироваться
- ты все верно реализовала
- а тут надо поправить
- */
- **********************************
- public interface DescribesResult {
- public String identity();
- public String expected();
- public String actual();
- }
- /*
- есть предложение - чуть улучшить соответствие single responsibility principle )
- перенести метод identity() отсюда в интерфейс LazyEntity
- и даже еще не так)
- реализовать интерфейс DescribesEntity - c методом identity()
- и от него отнаследовать LazyEntity
- реализовать такие методы - в AbstractLazyCollection и AbstractLazyElement
- кстати, может для коллекции - стоило бы возвращать не "elements", а "collection"
- и в toString() класса AbstractCondition<T>
- оперируй не identity() = методом кондишена
- а identity() = методом lazyEntity
- тогда будет все четче
- лейзи-сущность - будет сама про себя рассказывать - что за тим сущности(identity()) и подробности о сущности (toString)
- а кондишен - будет рассказывать то, за что именно он отвечает - actual, expected, ну и его имя
- */
- *************************
- public interface DescribesResult {
- public String identity();
- public String expected();
- public String actual();
- }
- /*
- не надо в интерфейсе указівать для методов - модификаторы доступа
- все объявленные в интерфейсе методы - при имплементации делаем public
- */
- ******************************
- /*
- еще для довершения картины
- в LazyCollection объяви методы
- int size();
- boolean isEmpty();
- String[] getTexts();
- в AbstractLazyCollection - реализуй их
- без всяких предварительных ожиданий
- отталкиваясь от результата getWrappedEntity() - списка вебэлементов
- */
- *****************************
- http://joxi.ru/1A5zNxjuKeXpQr
- /*
- похоже, слово Collection написано с не английскими буквами какими-то
- лучше бы подправить
- */
- ********************************
- /*
- вообще все классы просмотри
- чтоб не было лишних комментариев или отладочного кода
- пропуски строк - помогают форматированию
- реформатируй код
- ну и проверь - чтоб все тесты работали)
- ты кстати - заметила - что чуть шустрее тесты начали бегать?
- */
Advertisement
Add Comment
Please, Sign In to add comment