julia_v_iluhina

Untitled

Oct 26th, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.51 KB | None | 0 0
  1. public class TodoMVCTest {
  2.  
  3.   @Test
  4.   public void testCreateTask(){
  5.   /*
  6.     мы в этом тест-методе - тестируем не только добавление тасок в список
  7.     но и другие действия
  8.     имя тест-метода должно отражать точно - что тест-метод делает
  9.     правда, в случае с е2е тестами мы можем получить длинное плохо читаемое имя
  10.  
  11.     для этого применяют такой прием
  12.     https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
  13.  
  14.     советую весь раздел по naming почитать )
  15.   */
  16. //    Configuration.browser = "chrome";
  17. //    $("#new-todo").shouldBe(Condition.enabled);
  18. /*
  19.     предлагаю не нужный сейчас код - просто удалить, а не держать закомментированным
  20.     далее на курсе рассмотрим - где и как грамотнее менять настройки
  21.     пока это тут точно не нужно
  22. */
  23.     open("https://todomvc4tasj.herokuapp.com/");
  24.  
  25.     // 1-4. Task creation
  26.     $("#new-todo").setValue("task1").pressEnter();
  27.     $("#new-todo").setValue("task2").pressEnter();
  28.     $("#new-todo").setValue("task3").pressEnter();
  29.     $("#new-todo").setValue("task4").pressEnter();
  30.     $$("#todo-list li").shouldHave(size(4));
  31.     /*
  32.         проверки размера списка - недостаточно
  33.         ведь могли добавиться 4 таски, но не в том порядке
  34.         или не с такими, как надо, текстами
  35.  
  36.         есть кондишен для проверки коллекций
  37.         exactTexts
  38.             он проверяет
  39.             количество элементов списка равно количеству переданных текстов
  40.             текст элемента списка равен соответствующему переданному тексту (т е
  41.             текст первого элемента = первому тексту, второго - второму и т д)
  42.  
  43.         т е - кондишен exactTexts - проверит количество, порядок и сами тексты
  44.         уточни проверку
  45.     */
  46.  
  47.     //  5. delete task2
  48. //    $(By.cssSelector("#todo-list li:nth-of-type(2) .view .destroy")).hover().click();
  49. //    $(By.xpath("//*[@id='todo-list']/li[2]/div/button")).click();
  50. /*
  51.     обрати внимание - сначала в ручном режиме
  52.     кнопка .destroy не видима у задачи изначально
  53.     и только когда ты наводишь курсор мыши на саму таску - она становится видимой
  54.  
  55.         кликнуть на не видимом - невозможно
  56.         т е - надо сначала позаботиться, чтоб кнопка .destroy у нужной нам таски стала видимой
  57.         для этого надо для таски - вызвать метод hover()
  58.         и уже потом - кликать на кнопке
  59.  
  60.     сравни css selectors
  61.         #todo-list li:nth-of-type(2) .view .destroy
  62.         #todo-list li:nth-of-type(2) .destroy
  63.    
  64.         оба - находят кнопку .destroy
  65.         но второй вариант - полаконичнее (что важно - без потери точности)
  66.         часть #todo-list li - сокращать не стоит
  67.         пусть все селекторы для элементов, которые находятся внутри списка тасок #todo-list li
  68.         именно так и начинаются - вот это не стоит сокращать
  69.         уже сейчас это позволит понимать - что работаем с тем же списком #todo-list li
  70.         а дальше - мы этот код преобразуем, будет совсем ок)
  71.  
  72.     xpath - в этом задании не нужен
  73.         пока - достаточно возможностей css selector -ов
  74.         к нужному элементу списка доступайся - как ты и делаешь - через :nth-of-type(...)
  75.         в дальшейшем и это улучшим
  76.         пока цель - освоиться немного - и с css selector - ами в том числе
  77.  
  78.     важный момент
  79.         тесты - это не только действия
  80.         то, что действие выполнилось - это хорошо
  81.         но - нужно еще - чтобы его результаты нас устраивали
  82.         потому - нужны проверки после каждого действия теста
  83.         причем проверять нужно не только состояние таски, с которой мы работали
  84.         а состояние всего списка тасок
  85.         ведь могут быть проблемы такого рода - работали с одной таской, а состояние других тасок в списке
  86.         изменилось, причем не верно
  87.    
  88.         в некоторых случаях можно отложить действие
  89.         как мы это сделали после добавления 4-ех тасок
  90.         мы там могли себе это позволить - т к все 4 действия были однородны
  91.         и даже если проверка после добавления 4 тасок не прошла бы -
  92.         то мы все равно точно знали бы - что у нас проблема с добавлением таски
  93.    
  94.         про проверки далее не пишу
  95.         это касается всего кода
  96. */
  97.  
  98. //    6. mark task4 as completed
  99.     $(By.xpath(".//*[@id='todo-list']/li[3]/div/input")).click();
  100. /*
  101.     используй и тут css selector
  102.     здесь и далее
  103. */
  104.  
  105.     Element not found {By.id: #clear-completed}
  106.     Expected: visible
  107.  
  108. //    7. clear completed
  109.     $(By.id("#clear-completed")).shouldBe(Condition.visible).click();
  110. /*
  111.     By.id("#clear-completed") = локатор для элемента с ид = #clear-completed
  112.     "#clear-completed" -    cssSelector для єлемента с ид = clear-completed
  113.     вопрос - так какой ид у кнопки?
  114.     )
  115.        
  116.     не нужно перед вызовом  click() вызывать  shouldBe(Condition.visible)
  117.         т к  в Selenide - click() реализован уже со ждущей проверкой
  118.         сам Selenide будет при необходимости ждать видимости этого элемента
  119.         (конечно, в рамках таймаута, он по умолчанию = 4 секундам)
  120.          
  121.     используй import static для  Condition.visible
  122.         и тогда в коде сможешь писать visible
  123.         касается и других кондишенов
  124. */
  125. ...
  126. /*
  127.     далее - можно подправить по уже написанным комментариям)
  128. */
Advertisement
Add Comment
Please, Sign In to add comment