julia_v_iluhina

Untitled

Oct 6th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.25 KB | None | 0 0
  1.  
  2.  
  3. Задача - реализовать вот это
  4.  
  5. tasks.filter(visible)
  6. tasks.find(exactText(“a”))
  7.  
  8. ***************************************
  9.  
  10. Делаем аналогично ранее реализованным find и get
  11.     в классе родительского элемента делаем методы
  12.     которые вернут объекты новых Lazy типов
  13. ***************************************
  14. Определись, для какого класса добавляем методы filter и find
  15.  
  16. Посмотри, что получаем в результате - это от чего наследуем новые Lazy классы
  17.  
  18. Посмотри, какой вид кондишена мы передаем в качестве параметра -  это какой тип
  19. будем использовать для передаваемого в конструктор нового класса кондишена
  20.  
  21. Также надо подумать, что вернет toString()  для новых типов
  22. Нужно в эту фразу включить описание кондишена
  23. (посмотри на toString кондишена - нам столько подробностей тут не надо
  24. достаточно будет имя класса кондишена)
  25.  
  26. А значит - надо научить кондишены вернуть полезную фразу для этого случая
  27. Подумай
  28. Мы уже что-то похожее делали)
  29.  
  30. ***************************************
  31.  
  32. Как реализовать фильтрацию списка
  33. Надо для каждого элемента проверить выполнение кондишена
  34. И сформировать новый список элементов,
  35. для которых этот кондишен выполняется
  36.  
  37. Как реализовать поиск в списке
  38. Надо получить первый из элементов
  39. Который удовлетворяет условию
  40.  
  41. ***************************************
  42.  
  43. При проверке кондишена для элемента списка
  44. можно было бы использовать should
  45. но думать над каждым элементом списка в рамках таймаута - это очень долго
  46. тем более, что в начале методов
  47. filter и find уже есть ждущая проверка
  48.  
  49. потому нам нужна проверка без ожиданий и повторений, как в waitFor(...).until(...)
  50. но по тому же принципу)
  51. посмотри в waitFor(...).until(...)
  52.  
  53. наш элемент подходит, если для него
  54. condition.apply(this) != null
  55.  
  56. ***************************************
  57.  
  58. Но
  59. У нас  WebElement
  60. А чтобы проверить для него - condition.apply(this)
  61. Нам нужен потомок LazyEntity (а еще точнее - LazyElement)
  62.  
  63. Как это сделать
  64. У нас уже есть LazyWrappedWebElement
  65. В котором мы запоминаем Lazy-родителя (если нет - то стоит запоминать) и сам WebElement
  66.  
  67. а можно сделать еще красивее
  68. на уровне LazyElement
  69. объявить метод boolean is(Condition<WebElement> condition)
  70. и реализовать его в абстрактном предке AbstractLazyElement
  71. суть - применить к лейзи-объекту condition.apply
  72. и если результат не равен нулл и не произошло исключения - то результат=true
  73. посмотри в waitFor(...).until(...)
  74. try-catch секцию и вообще работу с condition.apply
  75.  
  76. этот метод ничего не ждет
  77. просто - возвращает - в данный момент -
  78. проходит ли проверка для конкретного лейзи-объекта
  79.  
  80. и теперь этот класс можно будет использовать в getWrappedEntity() тех классов
  81. которые мы реализвали для filter и find
  82.  
  83. ***************************************
  84.  
  85. протестируй решение
  86. на todoMVC
  87.  
  88. Включи в этот проект и адаптируй тест todoMVC
  89. который ранее делали - можно опять взять версию Smoke: E2E + F
  90.  
  91. Вероятнее всего, тебе кое-каких кондишенов не хватит
  92. Но среди ранее реализованных тобой кондишенов в предыдущих домашках
  93. по селениуму есть похожие
  94.  
  95. т е ничего в этом плане принципиально нового не будет
  96.  
  97. *************************************
  98. А кроме того - скорее всего тесты будут падать)))
  99. нестабильно падать с Null Pointer Exception
  100. это - подправим на следующем шаге
  101.  
  102. но  - все равно попробуй понять - при каких обстоятельствах это происходит
Advertisement
Add Comment
Please, Sign In to add comment