Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class AutomateTodoMVC_Test {
- @Test
- public void TodoMVC() throws InterruptedException {
- /*
- загляни в раздел по неймингу - https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#
- там есть информация о conventions как для имен тест-классов, так и для имен тест-методов
- приведи имена в соотвествие
- throws InterruptedException - зачем?
- */
- //Configuration.browser = CustomFirefoxWebDriverProvider.class.getName();
- //Configuration.collectionsTimeout = 2000;
- //Configuration.collectionsTimeout = 8000;
- /*
- Судя по всему, таки немного с firefox повозился)
- да, сейчас такой момент, не очень удобный для первых шагов
- приходится чуть глубже с этой темой знакомиться)
- */
- open("https://todomvc4tasj.herokuapp.com/");
- // Create tasks : task1, task2, task3, task4
- $("#new-todo").setValue("task1").pressEnter();
- $("#new-todo").setValue("task2").pressEnter();
- $("#new-todo").setValue("task3").pressEnter();
- $("#new-todo").setValue("task4").pressEnter();
- $$("#todo-list li").shouldHave(exactTexts("task1","task2","task3","task4"));
- /*
- все нравится - и то, что код идет отдельным блоком
- и проверка
- и комментарий пока уместен (обрати внимание на это "пока" :) - после второго видео станет понятнее -
- как избавиться от большинства комментариев и зачем это делать
- а пока - да, комментарии нужны
- и проверка - хорошая и к месту
- только вот форматировать код стоит все же стандартно
- не надо делать отступов для строк с проверками
- стандартно отформатированный код - такой кодекс вежливости
- мало ли кто потом с кодом работать будет
- пусть код будет в привычном для большинства виде
- стандартно отформатировать код несложно -
- в IntelIJ Idea
- выдели код
- в меню(верхнем) - выбери пункт - Code->Reformat code
- советую завести привычку - в конце работы - обязательно форматировать код
- вероятнее всего, ты будешь работать в команде, и твой код будут смотреть другие специалисты
- им проще смотреть на стандартно отформатированный код (как правило)
- иногда у команды есть свои правила форматирования, которые чуть отличатся от стандартных.
- Если все сделано по уму, то у всех членов команды в IntelIJ Idea именно так и настроено форматирование кода.
- Т е - все равно - привычка реформатировать код - нужна
- https://www.jetbrains.com/help/idea/2016.3/reformatting-source-code.html
- */
- // Delete task2
- $("#todo-list :nth-of-type(2)").click();
- $("#todo-list :nth-of-type(2)").pressTab();
- $("#todo-list :nth-of-type(2) button").pressEnter();
- /*
- пользователь реально так удаляет таску? :)
- кликает, нажимает Tab и лишь потом на кнопку удаления жмет?
- посмотри в faq на подсказки
- и внимательно посмотри - что должен сделать пользователь
- чтоб кнопка удаления стала видимой
- неужели нужно кликать на таске и/или нажимать Tab ?
- лучше реализовывать действие максимально приближенно к тому, что делает юзер
- ведь у нас уровень тестирования - Web UI Automation
- насчет селектора "#todo-list :nth-of-type(2)"
- что мы ищем
- такую-то таску
- выше мы получали коллекцию тасок вот так - "#todo-list li"
- теперь, нам нужно из этой же коллекции получить такой-то элемент
- а раз так - оттолкнись от "#todo-list li" и дополни его нужными уточнениями
- соглашусь, что и твой вариант рабочий, и даже более лаконичный
- дальше, уже на втором видео
- станет гораздо понятнее - для чего мы одно и то же получали одним и тем же способом
- но уже сейчас ясно - если мы поняли что такое "#todo-list li"
- то селекторы "#todo-list li..." будут тоже лучше понимаемыми - мы уже будем значть
- что мы оттолкнулись от того же самого
- т е - мы преследуем цель - максимально простой и понятный код
- (пока только ее, а чуть позже еще увидим другие существенные плюсы)
- это касается любого селектора для элемента, вложенного в структуре коллекции "#todo-list li"
- насчет селектора "#todo-list :nth-of-type(2) button"
- точнее его части - button
- посмотри на атрибуты этой кнопки
- что такое селектор = это маска, по которой мы верно можем идентифицировть наш элемент / коллекцию
- и для одного элемента/коллекции можно подобрать несколько вариантов селекторов
- предпочитай лаконичное, точное и наглядное решение
- пока - лаконично и точно
- но можно нагляднее
- смотри на id, class, name, другие атрибуты єлемента
- какие из них наиболее наглядно характеризуют элемент?
- */
- $$("#todo-list li").shouldHave(exactTexts("task1","task3","task4"));
- /*
- согласна, проверка уместна и точна
- все ок
- */
- // Mark task4 as completed
- $$("#todo-list .toggle").get(2).click();
- /*
- а тут немного вперед забежал)
- выше я уже писала - почему важно оттолкнуться от "#todo-list li" при работе с коллекцией
- и по структуре - советую продвигаться от общего к частному
- как правило, уберегает от разных проблем
- оттолкнулись от коллекции тасок
- получили нужную таску по индексу
- и для нее - получаем чекбокс
- если использовать get - то будет что-то типа
- $$("#todo-list li").get(2).find(".toggle")
- но в этой версии, для прокачки навыков построения селекторов - просто построй селектор для такого чекбокса
- молодец, что увидел и применил знания)
- просто у нас немного другие цели в данный момент - разобраться с селекторами
- а на втором видео - как раз и познакомимся с тем, как можно уйти от вот таких сложных построений селекторов
- */
- // Clear completed
- $("#clear-completed").click();
- $$("#todo-list li").shouldHave(exactTexts("task1","task3"));
- // Mark all as completed
- $("#toggle-all").click();
- // Clear completed
- $("#clear-completed").click();
- $("#todo-count strong").shouldHave(exactText(""));
- /*
- а тут лучше и точнее проверить все ту же коллекцию $$("#todo-list li") - что она пуста
- ведь если счетчик активных тасок не видим или пуст
- а в самом списке тасок куча лишнего - это будет критичнее
- по сравнению с обратной ситуацией - конда список тасок в порядке, а вто счетчик активных тасок - нет
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement