julia_v_iluhina

Untitled

Oct 18th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.80 KB | None | 0 0
  1.     public boolean is(Condition<WebElement> condition) {
  2.         try {
  3.             condition.check(getWrappedEntity());
  4.             return true;
  5.             /*
  6.                 а если condition.check вернет false? )
  7.                 почему не return condition.check(getWrappedEntity());
  8.                 ?
  9.             */
  10.         } catch (WebDriverException e) {
  11.         }
  12.         return false;
  13.     }
  14. *******************************
  15.         public static void add(String... taskTexts) {
  16.             for (String text : taskTexts)
  17.             {$("#new-todo").sendKeys(text + Keys.ENTER);}
  18.         }
  19. /*
  20.     скобочки добавила)
  21.     а почему форматирование - авторское? )
  22.  
  23.     не забывай реформатировать код
  24. */
  25. ***************************************
  26. public static LazyCollection mails = $$("[role='main'].zA");
  27. /*
  28.     нам нужны элементы с классом zA
  29.     внутри элемента [role='main']
  30.     где пробел в селекторе?
  31. */
  32. ************************************************
  33. public class ElementRun <V> {
  34.     public static WebElement runCommand(LazyElement element, Condition<WebElement> condition, Command<WebElement> command) {
  35.         return command.run(waitFor(element).until(condition));
  36.     }
  37. }
  38.  
  39. public interface Command <T> {
  40.     <T>T run(T wrappedEntity);
  41. }
  42.  
  43. /*
  44.     http://joxi.ru/D2PDbY1udGYLn2
  45.     давай разбираться)
  46.  
  47.     уже это всплывало у нас)
  48.     как раз закрепим
  49.     обрати внимание на картинку - <T> в объявлении класса - не подцвечено
  50.  
  51.     это потому - что в объявлении самого метода - заново объявлен класс <T>
  52.  
  53.     у тебя задача - чтобы run - возвращал значение того же типа T -
  54.     который мы указали в объявлении самого интерфейса
  55.     то же касается и типа параметра wrappedEntity
  56.  
  57.     если мы хотим - чтобы метод оперировал тем же T, что и класс
  58.     то
  59.     вместо <T>T run(T wrappedEntity);
  60.     нужно использовать T run(T wrappedEntity);
  61.     вот это <T> вначале объявления метода = это объявление нового типа
  62.     а нам этого в даннном случае этого не надо
  63.  
  64.     про класс ElementRun
  65.     ты указал  - что класс оперирует типом <V>
  66.     но - мы далее - не используем более этот <V>
  67.  
  68.     на самом деле - далеко не факт, что метод runCommand должен возвращать значение типа WebElement
  69.     если нам только такой тип и нужен - так не надо было никаких дженериков в Command
  70.  
  71.     но - нам же иногда и строку надо вернуть, и значения других типов -
  72.     мы же собираемся переписать все методы лейзи элемента
  73.     в которых - сначала ждем, потом - что-то делаем (и может быть - что-то возвращаем -
  74.     именно потому нам и нужно для Command использовать дженерик-тип)
  75.  
  76.     нам нужно - чтобы метод runCommand вернул значение такого типа
  77.     какой тип указан для Command<....>
  78.     и вот тут - нам именно для метода runCommand - надо объявить дженерик-класс
  79.     а вот на уровне класса ElementRun - этого типа не нужно объявлять
  80.  
  81.     теперь по поводу реализации метода  runCommand
  82.     минимально - то, что делал метод лейзи-элемента
  83.     сделает и эта команда
  84.  
  85.     но - можно ускорить
  86.     попробовать (в try-catch) - выполнить команду без ожидания
  87.     и если возникнет исключение - вот тогда уже - подождать и затем - выполнить команду
  88.  
  89.     такая реализация дает возможность - не делать ожиданий - там, где они не нужны
  90. */
  91. ***************************************
  92. http://joxi.ru/brRlV57uQg4Kv2
  93.  
  94. /*
  95.     в целом - верно
  96.     вот так все и задумывалось
  97.  
  98.     как поправишь дженерик-типы - не будет и такой проблемой
  99.  
  100.     смотри - тут WebElement - это уже некий новый тип
  101.     смотри на подцветку
  102.  
  103.     пока в синтаксисе плпваешь - ориентируйся на такие подсказки
  104.     просто ставь курсор на название типа и смотри - что подцветилось
  105. */
  106. *******************************************
  107. /*
  108.     когда это подправишь - чуть допили класс ElementRun
  109.  
  110.     переименуй его в WithWaitFor
  111.    
  112.     реализуй там метод  - withWaitFor и метод run
  113.    
  114.     чтобы вызывать
  115.     withWaitFor(element, condition).run(command)
  116.    
  117.     цель - заострить внимание
  118.         вот она - команда
  119.         вот он - элемент и кондишен
  120.    
  121.     схема - та же, что и в WaitFor
  122.     попробуй реализовать)
  123. */
Advertisement
Add Comment
Please, Sign In to add comment