julia_v_iluhina

Untitled

Dec 24th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.19 KB | None | 0 0
  1. public class BaseTest {
  2.     public static WebDriver driver = new FirefoxDriver();
  3.  
  4.     @AfterClass
  5.     public static void closeBrowser() {
  6.         driver.quit();
  7.     }
  8. }
  9. /*
  10.     перенес предка тест-класса в верную ветку проекта
  11.     а в целом - структурно - ок
  12.  
  13.     вот этот момент не очень удачный
  14.     http://joxi.ru/l2ZNaR0FwwDGv2
  15.     2 - снова пекедж test
  16.     хотя мы уже и так в ветке src \ test
  17.  
  18.     советую убрать из структуры пекедж test (2)
  19.  
  20.     и ты таки не прислушался к совету http://pastebin.com/rX3xAQf1, строки 14-20
  21.     создавай драйвер в BeforeClass-методе
  22.     если этот совет не понятен, или ты не видишь - как это проявляется - давай пообщаемся на эту тему
  23.     тонкий момент)
  24. */
  25. **************************
  26. public static ExpectedCondition<List<WebElement>> textsOf(final List<WebElement> elements, final String... texts) {
  27. /*
  28.     кетчер применил удачно
  29.  
  30.     но - напрасно из реализации кондишена - убрал сборку списка фактических текстов и последующую работу с ними
  31.     и в кондишене - не хватает toString-метода
  32.  
  33.     проверь - какое сообщение будет выдано - если проверка этого кондишена упадет
  34.     разве такое сообщение поможет?
  35.  
  36.     еще в чем плюс работы со списком фактических текстов
  37.     прокси-список веб-элементов - elements - постоянно переискивается при работе с ним
  38.     потому - ты можешь столкнуться с тем, что после сравнения if (elements.size() != texts.length)
  39.     размер списка вебэлементов - снова поменяется, и при анализе текстов - возникнут какие-то новые сложности
  40.  
  41.  
  42.     все же в кондишенах (даже с параметром-локатором, и с прокси-списком или элементом - это вообще критично)
  43.     стоит придерживаться такой схемы
  44.     сначала - собираем фактические данные (те, которые проверять будем)
  45.     и запоминаем их в соответствующем поле класса
  46.     затем - уже сравниваем эти фактические данные с ожидаемыми
  47.     и в toString - возвращаем фразу, в которой описаны и ожидаемый результат, и фактический
  48.     (заметь - мы собрали фактический результат - единожды
  49.     и на каких данных делали выводы - те и описали в toString - это мы с тобой и по скайпу обсуждали,
  50.     и было это в предыдущих ревью)
  51.  
  52.     в toString - не нужно заново получать фактические результаты
  53.     в случае с параметром кондшена - прокси-списком или элементом - ты банально можешь другое получить
  54.     в случае с параметром кондшена - локатором - это также критично, если заново получать по локатору элемент или список,
  55.     а если пользоваться ранее полученным - то это лишняя работа
  56.     в общем - выше описанная схема - хороша, и кажущаяся на первый взгляд избыточность - нужна
  57. */
  58. ***************************
  59. public static ExpectedCondition<WebElement> listNthElementHasText(final List<WebElement> elements, final int index, final String text) {
  60.         if (text.length() == 0) {
  61.             throw new IllegalArgumentException("Array of expected texts is empty.");
  62.         }
  63. /*
  64.     посмотри внимательно, что есть text и что есть text.length()
  65.     корректно ли сообщение
  66.  
  67.     и не хватает в реализации кондишена - метода toString
  68. */
  69. *******************************
  70. public static ExpectedCondition<Boolean> textsOfNew(final List<WebElement> elements, final String... expectedTexts) {
  71. /*
  72.     избавляйся от лишнего
  73.     ведь уже есть ExpectedCondition<List<WebElement>> textsOf(final List<WebElement> elements, final String... texts)
  74. */
  75. ****************************
  76. /*
  77.     А в целом - с кондишенами уже все неплохо
  78.     разобрался - что и когда возвращать
  79.     это ок
  80.  
  81.     И с применением кетчера - тоже ок
  82.  
  83.     но - доработать нужно - что выше описано - сбор фактических результатов и их анализ, плюс - toString
  84.     иначе - могут быть нестабильно проявляющиеся проблемки
  85.     и гарантированно - неинформативное сообщение при падении проверок кондишена
  86.     согласись, серьезные недостатки
  87. */
  88. ************************
  89. /*
  90.     Интересное решение - по пекеджам pages
  91.     в src \ main\ ...\ pages - предок
  92.     в src \ test\ ... \ pages - уже пейджи
  93.  
  94.     Имеет право на существование
  95.  
  96.     вообще - можно рассуждать так
  97.     если в проекте - содержатся только тесты (бывает, что тестируемое прилоение и его тесты - в одном проекте находятся)
  98.     так вот если в проекты - только тесты
  99.     то пейджи можно вынести в в src \ main\ ...\ pages - как переиспользуемые инструменты
  100.     в таком случае я бы разместила предка пейджа - в в src \ main\ ...\ core
  101.  
  102.     но и твоя версия структуры - вполне ок
  103. */
  104. ***************************
  105. /*
  106.     Остальное - ок
  107.  
  108.     стратегия следующая
  109.  
  110.     доработай кондишены в этой версии
  111.     и далее - либо в этом же репозитории, но в другом branch-е
  112.     либо - в другом репозитории - реализуй следующий проект
  113.  
  114.     уже в следующей версии - помимо описанного в условиях
  115.     переходи на работу без @FindBy элементов и списков
  116. */
Advertisement
Add Comment
Please, Sign In to add comment