julia_v_iluhina

Untitled

Sep 17th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.89 KB | None | 0 0
  1. /*
  2.     на самом деле - остались мелочи)
  3.     решение уже рабочее
  4.     просто можно сделать код - красивее, оптимальнее, нагляднее
  5.    
  6.     давай немного заполируем)
  7. */
  8.  
  9. http://joxi.ru/p275M9zs0B87gr
  10.  
  11. /*
  12.     по сути - все ок
  13.  
  14.     1 - нам на уровне класса - достаточно только этой переменной, обрати внимание на имя
  15.     остальные - нам нужны только в apply, так пусть там и будут
  16.     Такой подход упрощает восприятие кода - т к на каждом уровне - только необходимое
  17.  
  18.     2 - переменную для списка элементов - испольуем только в apply
  19.     тут и объявим ее
  20.  
  21.     3 - нам не нужно отдельно переменной для текущего списка элементов, и так - ок
  22.  
  23.     4 - обрати внимание на формулировки - имя переменной ,
  24.     тоже переменная объявлена ровно там - где нужна
  25.     формулировки - чуть ниже поясню
  26.  
  27.     5 - не elements, а element - достаточно у одного элемента чтобы был соответствующий класс
  28.  
  29.     6 - выводим весь список - значение атрибута class - для всех элементов списка
  30.     т к - мы искали элемент списка - анализируя классы
  31.     это может быть важной информацией
  32.  
  33.  
  34.     про формулировки
  35.  
  36.         Имя элемента и его классы
  37.         в выражении
  38.         <element class=“green bold”>
  39.         element - имя элемента
  40.         class -  имя атрибута
  41.         “green bold” - значение атрибута class
  42.         green - css класс элемента element
  43.         bold - еще один css класс элемента element
  44. */
  45. *****************************************
  46.  
  47. public static ExpectedCondition<List<WebElement>> exactTextOf(final By elementsLocator, final String... expectedTexts) {
  48.  ...
  49.                 elementsTexts = new ArrayList<>();
  50.                 List<WebElement> innerElements = driver.findElements(elementsLocator);
  51.                 elementsTexts = getTexts(innerElements);
  52.                 /*
  53.                     эти строчки можно упростить и
  54.                     имена привести в соответствие с кодом других кондишенов
  55.  
  56.                     одно и то же понятие - обозначай одним и тем же термином
  57.                     см вариант ниже
  58.                 */
  59.  
  60.                 List<WebElement> actualElements = driver.findElements(elementsLocator);
  61.                 actualTexts = getTexts(actualElements);
  62.  
  63. *********************************
  64. public static ExpectedCondition<List<WebElement>> exactTextsOfVisible(final By elementsLocator, final String... expectedTexts) {
  65. ...
  66.                 elementsTexts = getTexts(getVisibleElements(innerElements));
  67. ...
  68. /*
  69.     про формулировки - и тут приди к своей же терминологии
  70. */
  71.  //               isContainedInList(elementsTexts, expectedTexts);
  72. /*
  73.     ага, видела этот метод )
  74.     если его доработать - то и тут, и в exactTextOf - сможешь его использовать
  75.     ниже разберем
  76.  
  77.     а тут - не хватает сверки размера списка текстов  видимых элементов и количества переданных текстов
  78. */
  79. ....
  80. ***************************************************
  81.    public static boolean isContainedInList(List<String> list, String... texts) {
  82.         for (int i = 0; i < list.size(); i++) {
  83.             if (list.get(i).equals(texts[i])) {
  84.                 return true;
  85.             }
  86.         }
  87.         return false;
  88.     }
  89. /*
  90.  
  91. таки я в прошлом ревью - ошиблась про isContainedInList
  92. возможно - запутала тебя, сорри
  93. распутываемся
  94.  
  95. наша цель - в 2-ух кондишенах exactTexts...
  96. сверить
  97.     размер
  98.     порядок
  99.     тексты
  100.  
  101. что по сути нам надо сравнить - 2 набора текстов
  102.     areTextsEqual(List<String> texts1, String... texts2)
  103.  
  104. минимально -
  105.     подправь сигнатуру метода
  106.     и в реализации - сверь размер + порядок + тексты
  107.     используй этот метод в обоих кондишенах exactTexts...
  108.  
  109. а если хочется красоты и немного challenge ) - оптимизируй реализацию
  110.  
  111.     на входе - 2 набора строк для сравнения
  112.         список строк
  113.  
  114.         и var-args параметр texts
  115.         с которым можно работать как с массивом
  116.         http://www.linkex.ru/java/varargs.php
  117.         а массив - легко преобразовать список строк
  118.         http://stackoverflow.com/questions/2607289/converting-array-to-list-in-java
  119.  
  120.     А раз так - можно сравнить 2 списка в итоге)
  121.         https://docs.oracle.com/javase/8/docs/api/java/util/List.html#equals-java.lang.Object-
  122.         http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality
  123.         https://www.ibm.com/developerworks/ru/library/j-jtp05273/
  124. */
  125. *******************************
  126.  
  127.  public static  ExpectedCondition<Boolean> sizeOf(final By elementsLocator, final int size) {
  128.  ...
  129.                 if (actualElementsSize == size) {
  130.                     return true;
  131.                 }
  132.                 return false;
  133. /*
  134.     вот этот кусочек - можно в одну строку переписать
  135.     return (actualElementsSize == size);
  136.  
  137.     в sizeOfVisible - похожая ситуация
  138. */
  139. ***********************************
  140.   public static By byText(String text)
  141.   public static By byTitle(String text)
  142.   public static By byExactTitle(String text)
  143. /*
  144.     а чего ты это убрал из ConciseAPI?
  145.     полезные методы )
  146.  
  147.     я бы вернула
  148. */
  149. ***************************************
  150. public static void assertSizeOfTasks(int size) {
  151. public static void assertSizeOfVisibleTasks(int size) {
  152. /*
  153.     таки не послушался меня)
  154.     прошлое ревью, строки 295 - 301
  155.     ну... настаивать не буду )
  156. */
Advertisement
Add Comment
Please, Sign In to add comment