Сохранил автосгенерированный программный код в файл.
Фрагмент листинга сгенерированного программного кода сценария тестирования с комментариями представлен в листинге 1. Полный текст программы находится в приложении А, в конце лабораторной работы.
Листинг 1 – Фрагмент кода сценария тестирования №1
{ "id": "b68f5ccf-95ce-4bef-ba92-f579c5618950", "comment": "", "command": "click", "target": "id=header-search", "targets": [ ["id=header-search", "id"], ["name=text", "name"], ["css=#header-search", "css:finder"], ["xpath=//input[@id='header-search']", "xpath:attributes"], ["xpath=//input", "xpath:position"] ], "value": "" }, { "id": "8a1bfde4-fe53-42d8-8158-44166eb9430a", "comment": "", "command": "type", "target": "id=header-search", "targets": [ ["id=header-search", "id"], ["name=text", "name"], ["css=#header-search", "css:finder"], ["xpath=//input[@id='header-search']", "xpath:attributes"], ["xpath=//input", "xpath:position"] ], "value": "зубная щетка" }, { "id": "04195a38-f97b-438a-8179-f55eebf31bc7", "comment": "", "command": "sendKeys", "target": "id=header-search", "targets": [ ["css=.pVCfj:nth-child(1)", "css:finder"], ["xpath=//form/div/button/span", "xpath:position"], ["xpath=//span[contains(.,'Найти')]", "xpath:innerText"] ], "value": "${KEY_ENTER}" } |
Этот фрагмент кода представляет собой последовательность команд, которые используются для взаимодействия с полем поиска на веб-странице. Вначале выполняется команда click для активации поля поиска. Затем выполняется команда type для ввода текста “зубная щетка” в поле поиска. Наконец, выполняется команда sendKeys для имитации нажатия клавиши Enter, что инициирует поиск.
В каждой команде целевой элемент определяется несколькими способами (по id, по имени, по CSS-селектору, по XPath), что обеспечивает гибкость и надежность при поиске элемента на странице. Выпадающий список селекторов продемонстрирован на рисунке 11.
Этот фрагмент кода хорошо демонстрирует, как можно взаимодействовать с элементами веб-страницы и имитировать действия пользователя в сценарии тестирования.
Рисунок
11 – Пример выпадающего списка селекторов
для сценария №1
Сценарий тестирования №2: «Как выбрать товар»
Путь тестировщика по web-приложению при выполнении сценария №2 представлен на рисунках 12-15.
Рисунок
12 – Открытие главной страницы
веб-приложения
Рисунок
13 – Нажатие ссылки «Как выбрать товар»
в футере сайта
Рисунок
14 – Нажатие на «Не могу найти товар»
для появления дополнительного блока
текста
Рисунок
15 – Повторное нажатие на «Не могу найти
товар» для скрытия дополнительного
блока текста
Выполнил второй тестовый сценарий с записью программного кода рекордером.
Скриншот записи второго сценария в Selenium до первого прогона программного кода представлен на рисунке 16.
Рисунок
16 – Скриншот записи второго сценария
Получилось очень много команд «run script», которые записывались при прокрутке экрана вниз: веб-приложение автоматически добавляло новые карточки товара, из-за чего экран перемещался обратно выше и было тяжело добраться до футера сайта. После удаления ненужных команд для тестового сценария, тестовый проект Selenium стал компактее, результат показан на рисунке 17.
Рисунок
17 – Скриншот записи второго сценария
после удаления ненужных команд
Выполнил код второго сценария. Тесты прошли успешно без ошибок. Результат показан на рисунке 18.
Рисунок
18 – Успешное выполнение теста второго
сценария
Сохранил автосгенерированный программный код в файл.
Фрагмент листинга сгенерированного программного кода сценария тестирования с комментариями представлен в листинге 2. Полный текст программы находится в приложении Б, в конце лабораторной работы.
Листинг 2 – Фрагмент кода сценария тестирования №2
{ "id": "f49d8f2f-70d8-4e38-81a5-733bade35c2b", "comment": "", "command": "click", "target": "linkText=Как выбрать товар", "targets": [ ["linkText=Как выбрать товар", "linkText"], ["css=.\\_2owod:nth-child(2) > .\\_1AHfX:nth-child(2)", "css:finder"], ["xpath=//a[contains(text(),'Как выбрать товар')]", "xpath:link"], ["xpath=//a[contains(@href, 'https://yandex.ru/support/market/choice-goods/product-search.html')]", "xpath:href"], ["xpath=//div[3]/div/div/div/a", "xpath:position"], ["xpath=//a[contains(.,'Как выбрать товар')]", "xpath:innerText"] ], "value": "", "opensWindow": true, "windowHandleName": "win3443", "windowTimeout": 2000 } |
Этот фрагмент кода представляет собой команду click, которая используется для взаимодействия с элементом на веб-странице. В данном случае целевым элементом является ссылка с текстом “Как выбрать товар”.
В поле targets перечислены различные способы идентификации этого элемента, включая текст ссылки, CSS-селектор, и различные XPath выражения. Это обеспечивает гибкость и надежность при поиске элемента на странице. Выпадающий список селекторов продемонстрирован на рисунке 19.
Поле opensWindow указывает, что клик по этой ссылке открывает новое окно браузера. Имя этого нового окна (“win3443”) сохраняется в windowHandleName, и оно может быть использовано для переключения на это окно позже в сценарии. windowTimeout задает время ожидания открытия нового окна.
Этот фрагмент кода хорошо демонстрирует, как можно взаимодействовать с элементами веб-страницы и управлять окнами браузера в сценарии тестирования.
Рисунок
19 – Варианты локаторов (селекторов)
элемента
ВЫВОД
В результате лабораторной работы я научился пользоваться средством Selenium IDE и смог разработать автоматизированный тест.
По сравнению с другими контрольными и лабораторными работами по курсу «Программная инженерия», эта работа оказалась самой трудозатратой. Я столкнулся с техническими проблемами расширения Selenium IDE:
Во-первых, при взаимодействии с такими кнопками, как «добавить в корзину» или «добавить в сравнение», окно браузера полностью зависало при записи теста. Эта проблема воспроизводится в разных браузерах и у разных людей (уточнил у одногруппника). Из-за этой проблемы пришлось переделывать подготовленный тестовый сценарий и редактировать уже прописанный тест.
Во-вторых, некоторые баги возникали по ходу работы, в основном это зависания, но один из них я описал в своей работе – не работает нажатие клавиши «ENTER» в браузерах на базе Chromium. В качестве обходного пути тест был запущен через другой браузер Mozilla Firefox.
Также хотел бы обратить внимание на формулировку восьмого пункта к структуре отчёта в методических указаниях к этой лабораторной работе, поскольку там говорится о «селекторах», а это слово до этого ни разу не встречалось в методических указаниях. Как я понял, имеются ввиду локаторы.
В принципе, само расширение напомнило стандартное приложение на компьютере «Средство записи действий» или «Problem step recorder» (psr.exe). Там тоже можно включить запись, воспроизвести проблему и затем сохранить их как файл для дальнейшего предоставления поддержке или разработчикам. Она также записывает действия пользователя вместе со скриншотами, однако не предоставляет таких глубоких деталей как Selenium IDE.
Думаю, что этот инструмент может быть полезен разработчикам, которые делают сайт или помогают в его создании. Возможно, технической поддержке, но только если они отвечают за работоспособность и функционал сайта или им нужно донести до команды разработчиков проблему во всех деталях. Для конечного пользователя этот инструмент будет довольно сложный. Если бы не проблемы с зависанием, и выполнением нажатия некоторых кнопок, то инструмент очень даже полезный.
Работа мне понравилась, результатом я доволен. Увидел, что есть библиотека Selenium для языков программирования. Возможно, в будущем я ещё раз столкнусь с этим инструментом и мне будет легче с ним работать.
