julia_v_iluhina

Untitled

Oct 3rd, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.69 KB | None | 0 0
  1.     @Override
  2.     public LazyElement setValue(String text) {
  3.         this.clear();
  4.         this.sendKeys(text);
  5.         return this;
  6.     }
  7.     /*
  8.         тут лучше не использовать уже реалищованные this.clear() и this.sendKeys(text)
  9.         а реализовать свою команду
  10.  
  11.         мы оптимизируем скорость - и ддна команда отработает быстрее 2-ух команд
  12.  
  13.         если в методах pressEnter() и pressEscape() - это оправдано - т к одна команда вызывается
  14.         то вот тут лучше свою реализовать для лучшей скорости работы
  15.     */
  16. ***************************
  17. @Override
  18.     public boolean isDisplayed() {
  19. //        waitFor(this).until(present());
  20. //        return getWrappedEntity().isDisplayed();
  21.         withWaitFor(this, present()).run(new Command<WebElement>() {
  22.             @Override
  23.             public WebElement run(WebElement wrappedEntity) {
  24.                 wrappedEntity.isDisplayed();
  25.                 return wrappedEntity;
  26.             }
  27.         });
  28.         return false;
  29.     }
  30. /*
  31.     нам надо вернуть результат isDisplayed()
  32.     чтобы это сделать - нужно оперировать командой Command<Boolean>
  33.     и возвращать результат wrappedEntity.isDisplayed()
  34.  
  35.     посмотри - выше ты реализовывала для строковых результатов
  36.     тут - точно так же, только для Boolean
  37.  
  38.     то же самое и для других методов, которые boolean возвращают
  39.  
  40.     еще момент
  41.     я бы имя параметра метода run - сделала попроще -
  42.     не run(WebElement wrappedEntity)
  43.     а run(WebElement element)
  44.  
  45.     так легче будет читать код
  46.     да и легче увидеть - что внутри команды - ты именно этип параметром-элементом оперируешь
  47.  
  48.     т к wrappedEntity и getWrappedEntity(() - похожи
  49.     можно просто не заметить - как внутри команды используешь getWrappedEntity()
  50.     что делать не нужно
  51.  
  52.     касается всех методов
  53. */
  54. **************************
  55.  @Override
  56.     public LazyElement hover() {
  57. //        waitFor(this).until(visible());
  58. //        actions().moveToElement(getWrappedEntity()).perform();
  59. //        getWrappedEntity().getText();
  60. //        return this;
  61.         withWaitFor(this, visible()).run(new Command<WebElement>() {
  62.             @Override
  63.             public WebElement run(WebElement wrappedEntity) {
  64.                 actions().moveToElement(wrappedEntity).perform();
  65.                 getWrappedEntity().getText();
  66.                 return wrappedEntity;
  67.             }
  68.         });
  69.         return this;
  70.     }
  71. /*
  72.     а зачем тут getWrappedEntity().getText()?
  73.     вообще - избегай внутри команды такое использовать - посмотри -
  74.     как мы с командой в withWaitFor работаем
  75.     в run уже элемент есть
  76.     с ним и работай
  77.     и лишнего  - не делай
  78.  
  79.     комментарии убирай лишние
  80.     уже работаем над окончательной чистой версией
  81.  
  82. */
  83. *************************
  84. @Override
  85.     public Point getLocation() {
  86. //        waitFor(this).until(visible());
  87. //        return getWrappedEntity().getLocation();
  88.         withWaitFor(this, visible()).run(new Command<WebElement>() {
  89.             @Override
  90.             public WebElement run(WebElement wrappedEntity) {
  91.                 wrappedEntity.getLocation();
  92.                 return wrappedEntity;
  93.             }
  94.         });
  95.         return null;
  96.     }
  97. /*
  98.     а какой смысл что-то делать - если в итоге вернем null?
  99.  
  100.     в результате - нам надо вернуть значение типа Point
  101.     исходим от сигнатуры метода - который реализовываем
  102.  
  103.     потому - нужна команда типа Command<Point>
  104.     которая вернет это значение вызовет getLocation() у вебэлемента
  105.  
  106.     собственно - в getSize() и getRect() и даже в getScreenshotAs - где было непросто сориентироваться
  107.     ты все верно реализовала
  108.  
  109.     а тут надо поправить
  110. */
  111. **********************************
  112. public interface DescribesResult {
  113.  
  114.     public String identity();
  115.  
  116.     public String expected();
  117.  
  118.     public String actual();
  119. }
  120.  
  121. /*
  122.     есть предложение - чуть улучшить соответствие single responsibility principle )
  123.  
  124.     перенести метод identity() отсюда в интерфейс LazyEntity
  125.     и даже еще не так)
  126.     реализовать интерфейс DescribesEntity - c методом identity()
  127.     и от него отнаследовать LazyEntity
  128.  
  129.     реализовать такие методы - в AbstractLazyCollection  и AbstractLazyElement
  130.     кстати, может для коллекции - стоило бы возвращать не "elements", а "collection"
  131.  
  132.     и в toString() класса AbstractCondition<T>
  133.     оперируй не identity() = методом кондишена
  134.     а identity() =  методом lazyEntity
  135.  
  136.     тогда будет все четче
  137.     лейзи-сущность - будет сама про себя рассказывать - что за тим сущности(identity()) и подробности о сущности (toString)
  138.     а кондишен - будет рассказывать то, за что именно он отвечает - actual, expected, ну и его имя
  139. */
  140. *************************
  141. public interface DescribesResult {
  142.  
  143.     public String identity();
  144.  
  145.     public String expected();
  146.  
  147.     public String actual();
  148. }
  149. /*
  150.     не надо в интерфейсе указівать для методов - модификаторы доступа
  151.     все объявленные в интерфейсе методы  - при имплементации делаем public
  152. */
  153. ******************************
  154. /*
  155.     еще для довершения картины
  156.     в LazyCollection объяви методы
  157.  
  158.     int size();
  159.  
  160.     boolean isEmpty();
  161.  
  162.     String[] getTexts();
  163.  
  164.     в AbstractLazyCollection - реализуй их
  165.     без всяких предварительных ожиданий
  166.     отталкиваясь от результата getWrappedEntity() - списка вебэлементов
  167.  
  168. */
  169. *****************************
  170. http://joxi.ru/1A5zNxjuKeXpQr
  171.  
  172. /*
  173.     похоже, слово Collection написано с не английскими буквами какими-то
  174.     лучше бы подправить
  175. */
  176. ********************************
  177. /*
  178.     вообще все классы просмотри
  179.     чтоб не было лишних комментариев или отладочного кода
  180.     пропуски строк - помогают форматированию
  181.     реформатируй код
  182.    
  183.     ну и проверь - чтоб все тесты работали)
  184.    
  185.     ты кстати - заметила - что чуть шустрее тесты начали бегать?
  186. */
Advertisement
Add Comment
Please, Sign In to add comment