julia_v_iluhina

Untitled

Oct 31st, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.95 KB | None | 0 0
  1.     <dependencies>
  2.         <dependency>
  3.             <groupId>com.codeborne</groupId>
  4.             <artifactId>selenide</artifactId>
  5.             <version>2.20</version>
  6.         </dependency>
  7.         <dependency>
  8.             <groupId>junit</groupId>
  9.             <artifactId>junit</artifactId>
  10.             <version>4.12</version>
  11.         </dependency>
  12.     </dependencies>
  13. /*
  14.     можно использовать версии Selenide поновее)
  15.  
  16.     А лучше - использовать более новый Selenide )
  17.  
  18.     Рабочая комбинация  - Selenide 3.11 + Firefox 47.0.1
  19.  
  20.      Как можно определиться с версиями
  21.         Посмотреть сюда - какие версии Selenide уже доступны - http://ru.selenide.org/blog.html
  22.         Обычно в описании изменений - можно увидеть и эту информацию -
  23.         какая версия Selenium используется и с какой версией Firefox можно работать.
  24.         Если этого не описано для последней версии, то значит - этот момент не изменился по сравнению с
  25.         предыдущими версиями. Можно почитать описания предыдущих версий.
  26.  
  27.         Возможно, будет быстрее - посмотреть на более техническое описание
  28.         https://github.com/codeborne/selenide/blob/master/CHANGELOG
  29.         Можно найти упоминания о FireFox и/или Selenium и таким образом сориентироваться по версиям браузера
  30.         (упомянутая версия - точно подходит, возможно - также подойдет и версия повыше, но не факт)
  31.  
  32.         Еще важный момент - настройка FireFox об автоматическом обновлении до последней версии. Она может мешать )
  33. */
  34. ********************
  35. public class TodoMVCTest {
  36.  
  37.     @Test
  38.     public void testCreateTask(){
  39.         /*
  40.             если бы мы тестировали только создание таски - да, имя для тест-метода
  41.             подходило бы
  42.  
  43.             а мы тестируем - несколько действий)
  44.  
  45.             если их все перечислить в имени метода - получится длинновато
  46.             это тоже плохо влияет на наглядность
  47.  
  48.             в таких случаях - пригодится вот такой прием - называть тест-метод
  49.             например вот так - testTasksLifeCycle/ testTasksCommonFlow
  50.         */
  51.  
  52.         open("https://todomvc4tasj.herokuapp.com/");
  53.         $("#new-todo").setValue("task1").pressEnter();
  54.         $("#new-todo").setValue("task2").pressEnter();
  55.         $("#new-todo").setValue("task3").pressEnter();
  56.         $("#new-todo").setValue("task4").pressEnter();
  57.         $$("#todo-list li").shouldHave(exactTexts("task1", "task2", "task3", "task4"));
  58.  
  59.         // delete task2
  60.         $("#todo-list li[data-index = '1'] ").click();
  61.         $("#todo-list li[data-index = '1'] .destroy").click();
  62.         $$("#todo-list li").shouldHave(exactTexts("task1", "task3", "task4"));
  63.          /*
  64.                     не самый лучший способ найти нн-ый элемент - использование атрибута data-index
  65.                     попробуй сначала добавить 3 таски, а затем удалить вторую
  66.                     получишь - что data-index не будет отражать порядковый номер элемента
  67.  
  68.                     хотя, конечно, ты можешь возразить - что мы сами контролируем сценарий
  69.                     и соответственно - data-index элементов - тоже
  70.  
  71.                     в рамках challenge - попробуй переписать, используй возможности синтаксиса css selector-ов
  72.                     http://www.w3schools.com/cssref/css_selectors.asp
  73.                     вот тут ты найдешь варианты - как обратиться к такому-то элементу списка
  74.                     (не используя для этого атрибуты типа data-index)
  75.  
  76.                     конечно, этот код мы еще раз переделаем в итоге
  77.                     т к на самом деле - разумнее обращаться к таске по ее тексту
  78.                     (пока это отложи, ты сможешь это улучшить после просмотра следующего видео,
  79.                     а сейчас важнее разобраться с css selector-ами)
  80.          */
  81.  
  82.         // mark task4 as completed
  83.         $("#todo-list li[data-index = '3'] .toggle").click();
  84.         $$(".completed").shouldHave(exactTexts("task4"));
  85.         /*
  86.             к этой проверке еще вернемся )
  87.  
  88.             пока - в общем, верное решение
  89.             проверить все таски списка с классом completed
  90.  
  91.             единственное, что стоит улучшить - это обратиться к списку тасок, указывая и #todo-list li в селекторе
  92.             да, технически - не обязательно
  93.             но - уже сейчас - это даст больше понимания - что работаем мы по-прежнему со списком тасок
  94.             $$("#todo-list li.completed") - будет более наглядно
  95.  
  96.             и далее по коду это учти
  97.         */
  98.  
  99.         // clear completed
  100.         $("#clear-completed").click();
  101.         $$("#todo-list li").shouldHave(exactTexts("task1", "task3"));
  102.  
  103.         // mark all tasks as completed
  104.         $("#todo-list li[data-index = '0'] .toggle").click();
  105.         $("#todo-list li[data-index = '2'] .toggle").click();
  106.         /*
  107.             тут имелось в виду использование вот этого чекбокса
  108.             http://joxi.ru/n2YkKaGUjLKjgr
  109.         */
  110.         $$(".completed").shouldHave(exactTexts("task1", "task3"));
  111.  
  112.         // clear completed
  113.         $("#clear-completed").click();
  114.         $$("#todo-list li").shouldHave(size(0));
  115.         /*
  116.             технически - верная проверка
  117.             можно переписать ее лаконичнее
  118.             $$("#todo-list li").shouldBe(empty);
  119.         */
  120.  
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment