
Григорьева ЛР / ПИ7
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
старший преподаватель |
|
|
|
Н.Н. Григорьева |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №7 |
ТЕСТИРОВАНИЕ С ПОМОЩЬЮ SELENIUM WEBDRIVER И PYTHON |
по курсу: ПРОГРАММНАЯ ИНЖЕНЕРИЯ |
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
|
|
|
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2024
Цель работы:
Получение практических навыков по тестированию веб-элементов с помощью Selenium Webdriver и Python.
Для достижения поставленной цели требуется решить следующие задачи:
1. Установить программное окружение проекта по автоматизированному тестированию.
2. Реализовать проект по запуску браузера под управлением Selenium и отобразить в нем страницу веб-системы.
3. Разработать индивидуальный проект по нахождению веб-элементов на учебном ресурсе с помощью программных методов Selenium.
4. Создать проект по заполнению полей формы регистрации с использованием явных и неявных ожиданий Selenium.
5. Зафиксировать результаты тестирования в отчете.
Ход работы:
Была выполнена установка PyСharm (Рисунок 1).
Рисунок 1 – PyСharm
Установлены библиотеки pytest и selenium (Рисунок 2).
Рисунок 2 – Список установленных библиотек
Загружен и добавлен в файлы проекта chromedriver (Рисунок 3).
Рисунок 3 – Файлы проекта
Выполнено тестирование доступа к ресурсу youtube.com. С помощью chromedriver открывается веб-страница и по истечении 5 секунд закрывается (Рисунок 4, 5). Код представлен в листинге 1.
Рисунок 4 – Браузер под управлением webdriver
Рисунок 5 – Лог выполнения теста
Листинг 1 – Тест доступа к веб-приложению
from selenium import webdriver
import time
from selenium.webdriver.chrome.service import Service as ChromeService
# Путь к исполняемому файлу chromedriver.exe
chrome_driver_path = 'chromedriver-win64/chromedriver.exe'
# Создание сервиса Chrome
chrome_service = ChromeService(executable_path=chrome_driver_path)
# Создание экземпляра браузера
driver = webdriver.Chrome(service=chrome_service)
try:
# Открытие веб-системы
driver.get('https://www.youtube.com')
# Ждем некоторое время (в данном случае, 5 секунд)
time.sleep(5)
except Exception as e:
print(f"Произошла ошибка: {e}")
finally:
# Закрытие браузера
driver.quit()
Согласно варианту 15 (Рисунок 6), выполнено тестирование наличия шести предметных карточек (Рисунок 7, 8). На рисунках 9 – 14 представлены результаты поиска элементов средствами DevTools. Код автотеста представлен в листинге 2.
Рисунок 6 – Распределение вариантов
Рисунок 7 – Веб-страица под управлением chromedriver
Рисунок 8 – Результат выполнения теста
Рисунок 9 - Поиск элементов с тегом <h1> в браузере
Рисунок 10 - Поиск элементов с data-type=”nuts” в браузере
Рисунок 11 - Поиск элементов с class=”imageContainer” в браузере
Рисунок 12 - Поиск элементов с id=”almond” в браузере
Рисунок 13 - Поиск элементов с name=”cashew-nut” в браузере
Рисунок 14 - Поиск элементов с class=”hazelnutNut” в браузере
Листинг 2 – Автотест селекторов
from selenium import webdriver
import time
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
# Путь к исполняемому файлу chromedriver.exe
chrome_driver_path = 'chromedriver-win64/chromedriver.exe'
# Создание сервиса Chrome
chrome_service = ChromeService(executable_path=chrome_driver_path)
# Создание экземпляра браузера
driver = webdriver.Chrome(service=chrome_service)
try:
# Открытие веб-системы
driver.get('https://qa-test-selectors.netlify.app/')
# Выбор варианта
button = driver.find_element(By.XPATH, '/html/body/main/div[1]/div/section/button[15]')
button.click()
# Неявное ожидание для загрузки элементов страницы
driver.implicitly_wait(10)
# Элементы с тегом h1 (заголовки)
elements_by_tag = driver.find_elements(By.TAG_NAME, "h1")
print("Элементы с тегом h1:", len(elements_by_tag))
# Элементы с data-type="nuts"
elements_by_selector = driver.find_elements(By.CSS_SELECTOR, '[data-type="nuts"]')
print("Элементы с data-type=nuts", len(elements_by_selector))
# Элементы с классом imageContainer
elements_by_class = driver.find_elements(By.CLASS_NAME,"imageContainer")
print("Элементы с классом imageContainer:", len(elements_by_class))
# Элементы с ID almond
elements_by_id = driver.find_elements(By.ID, "almond")
print("Элементы с ID almond:", len(elements_by_id))
# Элементы с именем cashew-nut
elements_by_name = driver.find_elements(By.NAME, "cashew-nut")
print("Элементы с именем cashew-nut:", len(elements_by_name))
# Элементы с классом hazelnutNut
elements_by_class = driver.find_elements(By.CLASS_NAME, "hazelnutNut")
print("Элементы с классом hazelnutNut:", len(elements_by_class))
except Exception as e:
print(f"Произошла ошибка: {e}")
finally:
# Задержка перед закрытием браузера
time.sleep(5)
# Закрытие браузера
driver.quit()
Выполнены упражнения 4.3 – 4.5 из методических указаний (Рисунок 15 - 17).
Рисунок 15 – Выполнение упражнения 4.3
Рисунок 16 – Выполнение упражнения 4.4
Рисунок 17 – Выполнение упражнения 4.5
Был разработан и выполнен тест страницы с регистрацией, ограниченной по времени. (Рисунок 18, 19). Код теста представлен в листинге 3.
Рисунок 18 – Выполнение теста в IDE
Рисунок 19 – Страница успешной регистрации
Листинг 3 – Тест регистрации с таймером
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service as ChromeService # Путь к исполняемому файлу chromedriver.exe chrome_driver_path = 'chromedriver-win64/chromedriver.exe' # Создание сервиса Chrome chrome_service = ChromeService(executable_path=chrome_driver_path) # Создание экземпляра браузера browser = webdriver.Chrome(service=chrome_service) URL = " https://qa-course.netlify.app/registration-form-timer " try: # Открытие веб-страницы browser.get(URL) # Неявное ожидание для загрузки элементов страницы browser.implicitly_wait(1) # Выбор первого встреченного input по тегу input1 = browser.find_element(By.TAG_NAME, "input") input1.send_keys("Vladislav") # Выбор элемента по имени "lastName" input2 = browser.find_element(By.NAME, "lastName") input2.send_keys("Pakhomov") # Выбор третьего элемента, найденного по названию класса "formControl" input3 = browser.find_elements(By.CLASS_NAME, "formControl")[2] input3.send_keys("Russia") # Выбор элемента ввода, найденного по XPath "//input[@name='city']" input4 = browser.find_element(By.XPATH, "//input[@name='city']") input4.send_keys("Saint-Petersburg") # Выбор элемента по имени "email" input2 = browser.find_element(By.NAME, "email") input2.send_keys("vladislav@gmail.com") # Выбор элемента найденного, по CSS-селектору 'button[type="submit"]' button = browser.find_element(By.CSS_SELECTOR, 'button[type="submit"]') button.click() # Нажатие кнопки except Exception as e: print(f"Произошла ошибка: {e}") finally: # Задержка перед закрытием браузера time.sleep(5) # закрываем браузер после всех манипуляций browser.quit()
Вывод:
В ходе выполнения лабораторной работы были освоены навыки тестирования веб-элементов с помощью Selenium Webdriver и Python. Разработаны тесты для поиска элементов на веб-странице и заполнения формы регистрации. Все тесты выполнены успешно.
Список используемых источников:
Официальный портал проекта Selenium. URL: https://www.selenium.dev/ (дата обращения 12.05.2024).
Testengineer: Обучение тестированию, URL: https://testengineer.ru/category/obuchenie-testirovanie/ (дата обращения 12.05.2024).
Документация по Selenium Webdriver. URL: https://w3c.github.io/webdriver/ (дата обращения 12.05.2024).