Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <dependency>
- <groupId>com.codeborne</groupId>
- <artifactId>selenide</artifactId>
- <version>2.17</version>
- </dependency>
- /*
- ну тут версия 2.17 - точно ни к чему)
- можно и посвежее взять)
- в easy setup я обновила информацию о рабочих версиях
- https://docs.google.com/document/d/1fodHkTunrtit-EiMBrb91Mc6rbnQ5LwtBL9rISQveKA/edit?usp=sharing
- на самом деле, это придирки, конечно
- но doubleClick & hover - будет проще вызывать
- */
- ***********************************
- https://docs.google.com/document/d/1jXzf_AOIdSE8vAUhRwXXuI2ccMc3au4XvWl6TH1GMx8/edit?usp=sharing
- /*
- вот тут - можно полезного почитать
- опорный конспект
- */
- ****************************************
- import cucumber.api.java.After;
- /*
- эту аннотацию - используем для cucumber
- это ок
- */
- import org.junit.Before;
- /*
- а это - от junit аннотация
- */
- ...
- public class TodosStepHooks {
- ...
- @Before
- public void setup() {
- Configuration.timeout = 10000;
- }
- /*
- это - метод, аннотированный jUnit аннотацией
- и мы его расположили не в тест-классе
- и не в предке тест-класса
- далеко не факт, что будет ок работать
- никто не гарантирует
- отличный материал про hooks
- http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/
- и вот это тоже можно применить
- https://github.com/cucumber/cucumber/wiki/Background
- (это ты уже используешь)
- */
- }
- *********************************
- @When("^edit task '(.*)' to '(.*)' and press Escape$")
- public void editTaskAndPressEscape(String oldTask, String newTask) {
- doubleClick(tasks.find(exactText(oldTask)).find("label"));
- tasks.find(cssClass("editing")).find(".edit").setValue(newTask).sendKeys(ESCAPE);
- }
- @When("^edit task '(.*)' to '(.*)' and press Enter$")
- public void editTaskAndPressEnter(String oldTask, String newTask) {
- doubleClick(tasks.find(exactText(oldTask)).find("label"));
- tasks.find(cssClass("editing")).find(".edit").setValue(newTask).sendKeys(ENTER);
- }
- @When("^edit task '(.*)' to '(.*)' and press Tab$")
- public void editTaskAndPressTab(String oldTask, String newTask) {
- doubleClick(tasks.find(exactText(oldTask)).find("label"));
- tasks.find(cssClass("editing")).find(".edit").setValue(newTask).sendKeys(TAB);
- }
- /*
- и тут тебе никто не мешает быть dry
- как и ранее - вот эту общую часть
- doubleClick(tasks.find(exactText(oldTask)).find("label"));
- tasks.find(cssClass("editing")).find(".edit").setValue(newTask)
- можно реализовать как отдельный метод
- oldTask и newTask
- или
- oldTaskText и newTaskText
- ?
- вспомни = для одного понятия (текст таски) - один термин)
- */
- *******************************
- @But("^(\\d+) item\\(s\\) left$")
- public void itemsLeft(int count) {
- $("#todo-count>strong").shouldHave(exactText(Integer.toString(count)));
- }
- /*
- насчет @But - неожиданно)
- http://www.seleniumframework.com/cucumber-2/cucumber-keywords/
- посмотри на пример с but
- мне кажется - что это не наш случай)
- */
- ********************************************
- @Given("^added (.*) tasks (.*)$")
- public void givenTasks(TaskType taskType, List<String> taskTexts) {
- givenAtAll(aTasks(taskType, taskTexts.toArray(new String[0])));
- }
- /*
- Неожиданно)
- что можно преобразовать в вот такой параметр на лету - TaskType taskType
- это ты просто попробовала
- или где-то вычитала?
- если вычитала, дай линку плиз)
- ниже приведу варианты
- */
- *********************************************
- Scenario: complete task
- Given added COMPLETED tasks a, b
- When toggle task a
- Then tasks are: a, b
- But 1 item(s) left
- /*
- вот тут я не очень понимаю - почему But)
- жила-была девочка
- была она умная, но красивая )
- я там выше линку привела - там есть пример про but
- тут больше and подойдет
- */
- ********************************
- Scenario: complete all tasks
- Given added ACTIVE tasks a, b, c
- And toggle task c
- When toggle all tasks
- Then tasks are: a, b, c
- But 0 item(s) left
- /*
- tasks are: a, b, c - применяешь двоеточие
- Given added ACTIVE tasks a, b, c - нет
- тут тоже есть правила
- Когда ты используешь список - разумно использовать двоеточие
- (в обычных языках - что в русском, что в английском - мы так и поступаем)
- А когда просто в рамках предложения нужно указать один элемент тестовых данных
- Чтоб выделить их - используй кавычки
- Т е именно кавычки и двоеточие нам покажут, что это тестовые данные
- Будем экономны - или то, или то
- Одного средства достаточно, чтоб показать, что это тестовые данные
- В конспекте и видео - это есть
- Так и в примере на официальном сайте
- http://joxi.ru/L210nzMu6n4d4m
- Обрати внимание
- Что касается одиночных тестовых данных - цифр.
- Будет ОК как использовать кавычки, так и не использовать их.
- http://joxi.ru/bmoWZzahMkB9Ym
- Думаю, это же можно и к данным типа enum отнести)
- */
- *************************************
- /*
- это про то, как сложные гивены можно было бы реализовать
- делать не обязательно
- просто к сведению
- пример
- Given tasks:
- | a | COMPLETED |
- | b | ACTIVE |
- @Given("^tasks:$")
- public void givenTasks(DataTable data) {
- Map<String, String> givenTasks = data.asMap(String.class, String.class);
- ArrayList<String> names = new ArrayList<String>(givenTasks.keySet());
- ArrayList<String> statuses = new ArrayList<String>(givenTasks.values());
- ...
- }
- гугли
- cucumber data table example
- полезные линки
- http://toolsqa.com/cucumber/data-tables-in-cucumber/
- https://sukesh15.gitbooks.io/cucumber-jvm-test-framework-/content/cucumber_-_more_details/cucumber_-_datatables.html
- http://michielrop.blogspot.com/2013/09/cucumber-datatable-and-java.html
- http://cucumber.github.io/api/cucumber/jvm/javadoc/cucumber/api/DataTable.html
- */
Advertisement
Add Comment
Please, Sign In to add comment