Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <dependency>
- <groupId>com.codeborne</groupId>
- <artifactId>selenide</artifactId>
- <version>2.19</version>
- <scope>test</scope>
- </dependency>
- /*
- версия 2.19 - слишком старая)
- рекомендую использовать такую комбинацию для тестов (по крайней мере на первых порах)
- Selenide 3.11 + Firefox 47.0.1
- это позволит пока обойтись без geckodriver (самым простым способом)
- чуть подробнее можно тут почитать
- https://docs.google.com/document/d/1fodHkTunrtit-EiMBrb91Mc6rbnQ5LwtBL9rISQveKA/edit?usp=sharing
- */
- *********************************************
- Непонятным остался один вопрос. Почему селектор по тексту в браузере срабатывал, а в IIdea нет.
- где-то нашла предположение о том, что из-за числа в тексте.
- Но не уверенна Пришлось тащить ссылку через обращение к элементу массива
- Изначально хотела так
- #todo-list li:contains("Task 2")
- /*
- Это очень хорошая мысль - искать таску по ее тексту
- и мы в итоге придем к такой версии
- но не сейчас)
- какой синтаксис CSS поддерживается по умолчанию - см тут
- http://www.seleniumhq.org/docs/03_webdriver.jsp#by-css (см раздел By CSS)
- и пока - только это и будем использовать
- http://www.w3schools.com/cssref/css_selectors.asp
- вот такой синтаксис css Selectors - с использованием :contains("Task 2") - это синтаксис Sizzle
- т е - пока contains("Task 2") - не получится использовать в работе с css Selectors
- и пока не будем использовать xPath - для поиска таски по ее тексту
- пока - с помощью доступного тебе синтаксиса CSS селекторов - ищи нужную тебе таску как n-ый элемент
- цель - чуть освоиться с использованием и построением CSS селекторов
- затем - мы, конечно же, таску будем искать по ее тексту
- но - это уже потом
- в текущей версии - ищем таску как n-ый элемент списка
- на самом деле - и синтаксис Sizzle можно в Selenide использовать - начиная с версии 2.15
- http://selenide.org/2014/11/03/selenide-2.15/
- Но и это - пока не будем использовать)
- главное - это нам в итоге не пригодится
- и второе - на некоторых приложениях (в том числе и на нашем https://todomvc4tasj.herokuapp.com)
- проявляются проблемы с использованием Sizzle. Это пока надо решить на стороне Selenide
- Думаю - когда реализуем версию с поиском таски по ее тексту - ты со мной согласишься -
- нам не нужно использовать Sizzle)
- И так будет ОК
- Напоминаю - не торопись с поиском по тексту
- Это пока отложим)
- */
- *****************************
- public class TodoMVCTest {
- /*public WebDriver driver;
- String driverPath = "C:\\Program Files\\Geckodriver\\";
- System.setProperty("webdriver.gecko.driver", driverPath+"geckodriver.exe");
- */
- /*
- благодаря использованию версий Selenide 3.11 + Firefox 47.0.1
- тебе пока не придется как-то дополнительно настраивать вебдрайвер
- на первых порах это важно)
- */
- @Test
- public void testCreateTask()
- /*
- в тест-методе - мы не только создание таски тестируем
- посмотри раздел по неймингу в нашем faq
- https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit?usp=sharing
- особенно - вот это
- https://docs.google.com/document/d/10qSwWTQ6pGfVZSwOes-1QSmdflMiGD2U_y53VHq2m20/edit#bookmark=id.txqig9rkgybo
- */
- {
- /*
- в меню IntelIJ Idea
- выдели код (edit -> Select All)
- и выполни code->reformat code
- код будет реформатирован - все оступы будут приведены к стандартным
- в таком виде - будет легче воспринимать код
- и тебе, и другим)
- */
- open("https://todomvc4tasj.herokuapp.com");
- /*
- используй пропуски строк - для разделения кода на блоки
- каждый блок - решает какую-то всою задачу
- это тоже облегчит восприятие кода
- я бы тут пропустила строку )
- */
- $("#new-todo").setValue("Task 1").pressEnter();
- $("#new-todo").setValue("Task 2").pressEnter();
- $("#new-todo").setValue("Task 3").pressEnter();
- $("#new-todo").setValue("Task 4").pressEnter();
- /*
- в тесте нужны проверки
- тест - это не только нужные действия
- это еще и проверки результатов действий
- и правильнее - не откладывать проверки
- а делать их сразу после действий
- т к именно это позволит нам понять - что конкретно работает не так как нужно
- и как писала выше - проверки должны касаться не только таски, с которой мы непосредственно работали
- а всех тасок в списке
- ведь ошибка может проявляться и так - после работы с одной таской - состояние другой(или других) тасок тоже как-то портиться
- есть причины и/или цели
- по которым мы можем отложить проверку на несколько шагов
- вот, например выше - мы выполнили проверку после добавления всех 4-ех тасок
- даже если тест упал бы на той проверке - мы бы могли быстро понять - с чем у нас проблема - с добавлением тасок
- т е - точности мы не потеряли, проверив состояние списка тасок аж после добавления 4-ой таски
- пока - принимая решение - делать ли проверку или ее отложить - руководствуйся вот такими соображениями
- но в целом правило такое - проверки нужно делать сразу
- добавление тасок + проверки = еще один блок
- и далее применяй эти советы - и про блоки, и про проверки
- */
- $("#todo-list li:nth-of-type(2)").hover();
- $("#todo-list li:nth-of-type(2) .destroy").click();//.destroy").;
- /*
- да, я как раз и говорила про такого рода селекторы - поиск таски по ее номеру
- реализация удаления таски - ок
- нужна проверка)
- */
- $("#todo-list li:nth-of-type(3)").hover();
- $("#todo-list li:nth-of-type(3) .toggle").click();
- /*
- а тут hover() - не нужен
- если кнопка удаления - становится видимой только после того
- как курсор мыши наведен на таску
- то тут чекбокс .toggle - видим всегда
- и hover() - не нужен
- */
- ...
- /*
- не забывай про проверки
- и в конце теста - после последней операции - проверка тоже нужна
- */
- }
- /*
- потерялась скобочка )
- еще одна
- но это уже мелочи
- */
Advertisement
Add Comment
Please, Sign In to add comment