Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПИ7.docx
Скачиваний:
0
Добавлен:
12.04.2025
Размер:
2.66 Mб
Скачать

Цель работы:

Получение практических навыков по тестированию веб-элементов с помощью Selenium Webdriver и Python.

Для достижения поставленной цели требуется решить следующие задачи:

1. Установить программное окружение проекта по автоматизированному тестированию.

2. Реализовать проект по запуску браузера под управлением Selenium и отобразить в нем страницу веб-системы.

3. Разработать индивидуальный проект по нахождению веб-элементов на учебном ресурсе с помощью программных методов Selenium.

4. Создать проект по заполнению полей формы регистрации с использованием явных и неявных ожиданий Selenium.

5. Зафиксировать результаты тестирования в отчете.

Ход работы:

Выполнена установка Pycharm и создан новый проект (Рисунок 1).

Рисунок 1 – Создание проекта в Pycharm

Установлены библиотеки pytest и selenium (Рисунок 2).

Рисунок 2 – Вывод списка установленных библиотек

Скачан и добавлен в файлы проекта chromedriver (Рисунок 3).

Рисунок 3 – Файлы проекта

Разработана программа на Python с использованием Selenium для открытия веб-приложения rivegauche.ru в браузере и его последующего закрытия (Рисунок 4, 5).

Рисунок 4 – Браузер работает под управлением webdriver

Рисунок 5 – Выполнение теста в PyCharm

Листинг 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://rivegauche.ru/')

# Ждем некоторое время (в данном случае, 5 секунд)

time.sleep(5)

except Exception as e:

print(f"Произошла ошибка: {e}")

finally:

# Закрытие браузера

driver.quit()

Согласно варианту 21 написана программа по автоматизированному нахождению вебэлементов на странице (Рисунок 7, 8). На рисунках 9 – 14 представлены результаты поиска элементов средствами DevTools.

Рисунок 6 – Варианты

Листинг 2 – Автотест селекторов

from selenium import webdriver

Import time

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)

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[17]')

button.click()

# Неявное ожидание для загрузки элементов страницы

driver.implicitly_wait(10)

# Элементы с тегом h1 (заголовки)

elements_by_tag = driver.find_elements(By.TAG_NAME, "h1")

print("Элементы с тегом h1:", len(elements_by_tag))

# Элементы с именем "cool-bang"

elements_by_name = driver.find_elements(By.NAME, "cool-bang")

print("Элементы с именем cool-bang:", len(elements_by_name))

# Элементы с классом imageContainer

elements_by_class = driver.find_elements(By.CLASS_NAME,

"imageContainer")

print("Элементы с классом imageContainer:",

len(elements_by_class))

# Элементы с ID goldy

elements_by_id = driver.find_elements(By.ID, "goldy")

print("Элементы с ID goldy:", len(elements_by_id))

# Элементы c data-type="penguins"

elements_by_selector = driver.find_elements(By.CSS_SELECTOR,

'[data-type="penguins"]')

print("Элементы с data-type penguins:", len(elements_by_selector))

except Exception as e:

print(f"Произошла ошибка: {e}")

finally:

# Задержка перед закрытием браузера

time.sleep(15)

# Закрытие браузера

driver.quit()

Рисунок 7 – Веб-страница под управлением chromedriver

Рисунок 8 – Результат работа программы

Рисунок 9 - Поиск элементов с тегом <h1> в браузере

Рисунок 10 - Поиск элементов с name= “cool-bang” в браузере

Рисунок 11 - Поиск элементов с class= “imageContainer” в браузере

Рисунок 12 - Поиск элементов с id= “goldy” в браузере

Рисунок 13 - Поиск элементов с data-type= “penguins” в браузере

Реализовано автозаполнению и отправке формы регистрации с использованием явного ожидания появления события (Рисунок 14).

Листинг 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"

try:

# Открытие веб-страницы

browser.get(URL)

# Явное ожидание для загрузки элементов страницы

time.sleep(2)

# Выбор первого встреченного input по тегу

input1 = browser.find_element(By.TAG_NAME, "input")

input1.send_keys("Ivan")

# Выбор элемента по имени "lastName"

input2 = browser.find_element(By.NAME, "lastName")

input2.send_keys("Petrov")

# Выбор третьего элемента, найденного по названию класса

"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("Moscow")

# Явное ожидание для появления кнопки

time.sleep(5)

# Выбор элемента, найденного по 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()

Рисунок 15 – Успешная регистрация с использованием явного ожидания появления события

Заполнены поля формы регистрации с использованием неявного ожидания (Рисунок 16).

Листинг 4 – Автозаполнение и отправка формы регистрации с использованием неявного ожидания появления события

Соседние файлы в предмете Программная инженерия