{"id":19411635,"url":"https://github.com/levvolkov/selenide","last_synced_at":"2026-04-21T16:34:40.837Z","repository":{"id":229201115,"uuid":"775946833","full_name":"levvolkov/selenide","owner":"levvolkov","description":"4 «Selenide»","archived":false,"fork":false,"pushed_at":"2024-03-23T13:13:20.000Z","size":9372,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-25T03:04:07.649Z","etag":null,"topics":["appveyor","automated-testing","ci","gradle","selenide"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/levvolkov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-22T11:14:33.000Z","updated_at":"2025-02-02T15:51:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"4ec24c97-4913-45f0-8a73-c0b09423fba5","html_url":"https://github.com/levvolkov/selenide","commit_stats":null,"previous_names":["levvolkov/selenide"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/levvolkov/selenide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2Fselenide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2Fselenide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2Fselenide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2Fselenide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/levvolkov","download_url":"https://codeload.github.com/levvolkov/selenide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2Fselenide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32100293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appveyor","automated-testing","ci","gradle","selenide"],"created_at":"2024-11-10T12:22:25.220Z","updated_at":"2026-04-21T16:34:40.819Z","avatar_url":"https://github.com/levvolkov.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build status](https://ci.appveyor.com/api/projects/status/pmoq6980yr6xye67?svg=true)](https://ci.appveyor.com/project/LevVolkov/selenide)\n\n# 4. Домашнее задание к занятию «2.2. Selenide»\n\nВ качестве результата пришлите ссылку на ваш GitHub-проект в личном кабинете студента на сайте [netology.ru](https://netology.ru).\n\nВсе задачи этого занятия нужно делать в одном репозитории. Автотесты первой и второй задач можно реализовать в одном классе или разбить по разным в рамках одного проекта. Ветки репозитория для разделения задач использовать не рекомендуется. \n\n**Важно**: если у вас что-то не получилось, то оформляйте issue [по установленным правилам](https://github.com/netology-code/aqa-homeworks/blob/master/report-requirements.md).\n\n**Важно**: не делайте ДЗ всех занятий в одном репозитории. Иначе вам потом придётся достаточно сложно подключать системы Continuous integration.\n\n## Как сдавать задачи\n\n1. Инициализируйте на своём компьютере пустой Git-репозиторий.\n1. Добавьте в него готовый файл [.gitignore](https://github.com/netology-code/aqa-homeworks/blob/master/.gitignore).\n1. Добавьте в этот же каталог код ваших автотестов.\n1. Сделайте необходимые коммиты.\n1. Добавьте в каталог `artifacts` целевой сервис [app-card-delivery.jar](https://github.com/netology-code/aqa-homeworks/blob/master/selenide/app-card-delivery.jar).\n1. Создайте публичный репозиторий на GitHub и свяжите свой локальный репозиторий с удалённым.\n1. Сделайте пуш — удостоверьтесь, что ваш код появился на GitHub.\n1. Выполните интеграцию проекта с Github Actions ([инструкция](https://github.com/netology-code/aqa-homeworks/tree/master/github-actions-integration)) или Appveyor ([инструкция](https://github.com/netology-code/aqa-homeworks/tree/master/api-ci#appveyor)) на выбор, удостоверьтесь что автотесты в CI выполняются.          \n1. Поставьте бейджик сборки вашего проекта в файл README.md.\n1. Ссылку на ваш проект отправьте в личном кабинете на сайте [netology.ru](https://netology.ru).\n1. Задачи, отмеченные как необязательные, можно не сдавать, это не повлияет на получение зачёта.    \n1. Автотесты могут падать и сборка может быть красной из-за багов тестируемого приложения. В таком случае должны быть заведены репорты на обнаруженные в ходе тестирования дефекты в отдельных issues, [придерживайтесь схемы при описании](https://github.com/netology-code/aqa-homeworks/blob/master/report-requirements.md).\n\n## Настройка CI\n    \nНастройка CI осуществляется аналогично предыдущему заданию, за исключением того, что файл целевого сервиса теперь называется `app-card-delivery.jar`.\n\n## Задача №1: заказ доставки карты\n\nВам необходимо автоматизировать тестирование формы заказа доставки карты:\n\n![](https://github.com/netology-code/aqa-homeworks/blob/master/selenide/pic/order.png)\n\nТребования к содержимому полей:\n1. Город — [один из административных центров субъектов РФ](https://ru.wikipedia.org/wiki/%D0%90%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5_%D1%86%D0%B5%D0%BD%D1%82%D1%80%D1%8B_%D1%81%D1%83%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%B9_%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8).\n1. Дата — не ранее трёх дней с текущей даты.\n1. В поле фамилии и имени разрешены только русские буквы, дефисы и пробелы.\n1. В поле телефона — только 11 цифр, символ + на первом месте.\n1. Флажок согласия должен быть выставлен.\n\nТестируемая функциональность: отправка формы.\n\nПоля «Город» и «Дата» заполняются через прямой ввод значений без использования выбора из выпадающего списка и всплывающего календаря.\n\nУсловия: если все поля заполнены корректно, то форма переходит в состояние загрузки:\n\n![](https://github.com/netology-code/aqa-homeworks/blob/master/selenide/pic/loading.png)\n\nВажно: состояние загрузки не должно длиться более 15 секунд.\n\nПосле успешной отправки формы появится всплывающее окно об успешном завершении бронирования:\n\n![](https://github.com/netology-code/aqa-homeworks/blob/master/selenide/pic/popup.png)\n\nВам необходимо самостоятельно изучить элементы на странице, чтобы подобрать правильные селекторы. Обратите внимание, что элементы могут быть как скрыты, так и динамически добавляться или удаляться из DOM.\n\n\u003cdetails\u003e\n    \u003csummary\u003eПодсказка\u003c/summary\u003e\n\n    Смотрите на `data-test-id`, но помните, что он может быть не у всех элементов.\n\u003c/details\u003e\n\n**Важно: Дата и время всегда будут уязвимым местом ваших тестов.**   \n\nКлючевая ловушка в том, что, если вы их захардкодите, то тест, который работал сегодня, уже может не работать завтра, через неделю, месяц, потому что дата может перейти в разряд условного прошлого для приложения и стать невалидной.   \nКроме того, дата и время — это одно из немногих мест в тестах, где вам **иногда** придётся писать логику.   \n\nДля решения данной задачи тоже будет необходимо выполнить генерацию даты согласно требований, описанных в условии.   \n\nРекомендуем для генерации строки с датой использовать класс [LocalDate](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/LocalDate.html), имеющий все необходимые инструменты:   \n- метод `now()` этого класса вернет вам текущую дату  \n- `plusDays(long daysToAdd)` умеет добавлять к дате указанное количество дней  \n- `format(DateTimeFormatter formatter)` выполнит форматирование даты из типа LocalDate в String используя переданный аргументом [DateTimeFormatter](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html)      \n\n\u003cdetails\u003e\n    \u003csummary\u003eПодсказка\u003c/summary\u003e      \n\nПоле ввода, которое необходимо заполнить в рамках сценария может быть заполнено значением по-умолчанию.   \n\nДля заполнения такого поля вам придется его предварительно очистить. При этом метод `clear()` работает далеко не на всех формах.  \nВ таком случае вам придётся повторить действия пользователя на странице.   \n    \nСодержимое поля необходимо выделить и послать нажатие кнопок для удаления текста в поле.   \nНажатие клавиш умеет посылать метод `sendKeys(CharSequence... keysToSend)`, а необходимые клавиши вы найдете в енаме [Keys](https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/Keys.html).          \nВыделить текст можно двойным кликом или сочетанием клавиш.        \n\u003c/details\u003e\n\n## Задача №2: взаимодействие с комплексными элементами (необязательная)\n\nБольшинство систем старается помогать пользователям ускорить выполнение операций: для этого предоставляются формы с автодополнением и элементы вроде календарей.\n\nПроверьте отправку формы, используя следующие условия:\n1. Ввод двух букв в поле «Город», после чего выбор нужного города из выпадающего списка:\n\n![](https://github.com/netology-code/aqa-homeworks/blob/master/selenide/pic/dropdown.png)\n\n2. Выбор даты на неделю вперёд, начиная от текущей даты, через инструмент календаря:\n\n![](https://github.com/netology-code/aqa-homeworks/blob/master/selenide/pic/calendar.png)\n\n**Важно: предлагаемая вам задача действительно сложная и потребует от вас достаточно много усилий для решения. Именно поэтому мы перенесли её в разряд необязательных.**\n\nP.S. Стоит отметить, что перед автоматизацией вы должны попробовать оценить стоимость автоматизации, в неё же входит и сложность. Но оценивать вы не научитесь, не попробовав автоматизировать.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevvolkov%2Fselenide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flevvolkov%2Fselenide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevvolkov%2Fselenide/lists"}