Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.08 KB | None | 0 0
  1. public class AutomateTodoMVC_Test {
  2.  
  3.     @Test
  4.     public void  TodoMVC() throws InterruptedException {
  5. /*
  6.     загляни в раздел по неймингу - https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#
  7.     там есть информация о conventions как для имен тест-классов, так и для имен тест-методов
  8.     приведи имена в соотвествие
  9.  
  10.     throws InterruptedException - зачем?
  11. */
  12.         //Configuration.browser = CustomFirefoxWebDriverProvider.class.getName();
  13.         //Configuration.collectionsTimeout = 2000;
  14.         //Configuration.collectionsTimeout = 8000;
  15. /*
  16.     Судя по всему, таки немного с firefox повозился)
  17.     да, сейчас такой момент, не очень удобный для первых шагов
  18.     приходится чуть глубже с этой темой знакомиться)
  19. */
  20.         open("https://todomvc4tasj.herokuapp.com/");
  21.  
  22.         // Create tasks :  task1, task2, task3, task4
  23.         $("#new-todo").setValue("task1").pressEnter();
  24.         $("#new-todo").setValue("task2").pressEnter();
  25.         $("#new-todo").setValue("task3").pressEnter();
  26.         $("#new-todo").setValue("task4").pressEnter();
  27.             $$("#todo-list li").shouldHave(exactTexts("task1","task2","task3","task4"));
  28.         /*
  29.             все нравится - и то, что код идет отдельным блоком
  30.             и проверка
  31.             и комментарий пока уместен (обрати внимание на это "пока" :) - после второго видео станет понятнее -
  32.             как избавиться от большинства комментариев и зачем это делать
  33.             а пока - да, комментарии нужны
  34.  
  35.             и проверка - хорошая и к месту
  36.  
  37.             только вот форматировать код стоит все же стандартно
  38.             не надо делать отступов для строк с проверками
  39.             стандартно отформатированный код - такой кодекс вежливости
  40.             мало ли кто потом с кодом работать будет
  41.             пусть код будет в привычном для большинства виде
  42.  
  43.             стандартно отформатировать код несложно -
  44.              в IntelIJ Idea
  45.                     выдели код
  46.                     в меню(верхнем) - выбери пункт  - Code->Reformat code
  47.  
  48.                     советую завести привычку - в конце работы - обязательно форматировать код
  49.                     вероятнее всего, ты будешь работать в команде, и твой код будут смотреть другие специалисты
  50.                     им проще смотреть на стандартно отформатированный код (как правило)
  51.                     иногда у команды есть свои правила форматирования, которые чуть отличатся от стандартных.
  52.                     Если все сделано по уму, то у всех членов команды в IntelIJ Idea именно так и настроено форматирование кода.
  53.                     Т е - все равно - привычка реформатировать код - нужна
  54.  
  55.                     https://www.jetbrains.com/help/idea/2016.3/reformatting-source-code.html
  56.         */
  57.  
  58.         // Delete task2
  59.         $("#todo-list :nth-of-type(2)").click();
  60.         $("#todo-list :nth-of-type(2)").pressTab();
  61.         $("#todo-list :nth-of-type(2) button").pressEnter();
  62.         /*
  63.             пользователь реально так удаляет таску? :)
  64.             кликает, нажимает Tab и лишь потом на кнопку удаления жмет?
  65.  
  66.             посмотри в faq на подсказки
  67.  
  68.             и внимательно посмотри - что должен сделать пользователь
  69.             чтоб кнопка удаления стала видимой
  70.  
  71.             неужели нужно кликать на таске и/или нажимать Tab ?
  72.  
  73.             лучше реализовывать действие максимально приближенно к тому, что делает юзер
  74.             ведь у нас уровень тестирования - Web UI Automation
  75.  
  76.             насчет селектора "#todo-list :nth-of-type(2)"
  77.             что мы ищем
  78.             такую-то таску
  79.             выше мы получали коллекцию тасок вот так - "#todo-list li"
  80.             теперь, нам нужно из этой же коллекции получить такой-то элемент
  81.             а раз так - оттолкнись от "#todo-list li" и дополни его нужными уточнениями
  82.             соглашусь, что и твой вариант рабочий, и даже более лаконичный
  83.             дальше, уже на втором видео
  84.             станет гораздо понятнее - для чего мы одно и то же получали одним и тем же способом
  85.             но уже сейчас ясно - если мы поняли что такое "#todo-list li"
  86.             то селекторы "#todo-list li..." будут тоже лучше понимаемыми - мы уже будем значть
  87.             что мы оттолкнулись от того же самого
  88.             т е - мы преследуем цель - максимально простой и понятный код
  89.             (пока только ее, а чуть позже еще увидим другие существенные плюсы)
  90.             это касается любого селектора для элемента, вложенного в структуре коллекции "#todo-list li"
  91.  
  92.             насчет селектора "#todo-list :nth-of-type(2) button"
  93.             точнее его части - button
  94.             посмотри на атрибуты этой кнопки
  95.             что такое селектор = это маска, по которой мы верно можем идентифицировть наш элемент / коллекцию
  96.             и для одного элемента/коллекции можно подобрать несколько вариантов селекторов
  97.             предпочитай лаконичное, точное и наглядное решение
  98.  
  99.             пока - лаконично и точно
  100.             но можно нагляднее
  101.             смотри на id, class, name, другие атрибуты єлемента
  102.             какие из них наиболее наглядно характеризуют элемент?
  103.         */
  104.             $$("#todo-list li").shouldHave(exactTexts("task1","task3","task4"));
  105.          /*
  106.             согласна, проверка уместна и точна
  107.             все ок
  108.          */
  109.  
  110.         // Mark task4 as completed
  111.         $$("#todo-list .toggle").get(2).click();
  112.         /*
  113.             а тут немного вперед забежал)
  114.  
  115.             выше я уже писала - почему важно оттолкнуться от "#todo-list li" при работе с коллекцией
  116.             и по структуре - советую продвигаться от общего к частному
  117.             как правило, уберегает от разных проблем
  118.                 оттолкнулись от коллекции тасок
  119.                 получили нужную таску по индексу
  120.                 и для нее - получаем чекбокс
  121.              если использовать get - то будет что-то типа
  122.             $$("#todo-list li").get(2).find(".toggle")
  123.             но в этой версии, для прокачки навыков построения селекторов - просто построй селектор для такого чекбокса
  124.  
  125.             молодец, что увидел и применил знания)
  126.             просто у нас немного другие цели в данный момент - разобраться с селекторами
  127.             а на втором видео - как раз и познакомимся с тем, как можно уйти от вот таких сложных построений селекторов
  128.         */
  129.         // Clear completed
  130.         $("#clear-completed").click();
  131.             $$("#todo-list li").shouldHave(exactTexts("task1","task3"));
  132.  
  133.         // Mark all as completed
  134.         $("#toggle-all").click();
  135.         // Clear completed
  136.         $("#clear-completed").click();
  137.  
  138.             $("#todo-count strong").shouldHave(exactText(""));
  139.         /*
  140.             а тут лучше и точнее проверить все ту же коллекцию $$("#todo-list li") - что она пуста
  141.  
  142.             ведь если счетчик активных тасок не видим или пуст
  143.             а в самом списке тасок куча лишнего - это будет критичнее
  144.             по сравнению с обратной ситуацией - конда список тасок в порядке, а вто счетчик активных тасок - нет
  145.         */    
  146.      }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement