Скачиваний:
7
Добавлен:
03.06.2024
Размер:
1.67 Mб
Скачать

ГУАП

КАФЕДРА № 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. Разработаны тесты для поиска элементов на веб-странице и заполнения формы регистрации. Все тесты выполнены успешно.

Список используемых источников:

  1. Официальный портал проекта Selenium. URL: https://www.selenium.dev/ (дата обращения 12.05.2024).

  2. Testengineer: Обучение тестированию, URL: https://testengineer.ru/category/obuchenie-testirovanie/ (дата обращения 12.05.2024).

  3. Документация по Selenium Webdriver. URL: https://w3c.github.io/webdriver/ (дата обращения 12.05.2024).

Соседние файлы в папке Григорьева ЛР