Составление требований к созданию среды автоматизированного тестирования WebUI, детальное проектирование и проектирование среды
Составление требований к созданию среды автоматизированного тестирования WebUI, детальное проектирование и проектирование среды

1 Общий спрос

1.1 Достичь цели

  • На основе архитектуры BS имитировать действия пользователя (мышь, клавиатура) для достижения быстрого и многократного выполнения тестовых случаев;
  • Облегчает регрессионное тестирование и быстро охватывает основные варианты использования или функции;
  • Онлайн- или офлайн-проверка и тестирование в сочетании с непрерывной интеграцией позволяют своевременно обнаруживать проблемы в операционной среде;
  • личное совершенствование Автоматизированное Возможности современной технологии предоставляют мощные средства тестирования для бизнеса.

1.2 Функциональные требования

  • На основе Unittest,Инкапсулируйте, вызывайте и систематизируйте все тестовые случаи,руководить Запускайте пакетно или в конкретных случаях использования;
  • Служба поддержки электронной почты,Вы можете добавить адрес электронной почты любого члена команды.,Своевременно оповещать членов бригады о результатах операции;
  • Поддерживает журналы для сохранения всех данных или данных, которые необходимо записывать во время запущенного процесса;
  • Поддерживает отчеты о тестировании в формате HTML для визуального отображения результатов и данных испытаний;
  • Поддерживает разделение вариантов использования и результатов тестирования для облегчения управления данными;
  • Поддерживает чтение Json, conf, excel и других файлов конфигурации, а также предоставляет гибкие методы работы с файлами конфигурации;
  • Поддерживает инкапсуляцию входа пользователя, и все последующие входы в систему используют общий метод;
  • Поддерживает любые модификации HTMLTestRuner и настраиваемый шаблон отчета о тестировании;
  • Поддержка многоязычных отчетов об испытаниях (английский и китайский);
  • Поддержка функции скриншотов;
  • Поддержка непрерывной интеграции Jenkins.

1.3 Прочие требования

  • Применимо ко всей архитектуре БС. Автоматизированное. тестирование;
  • Модульная конструкция, код организации структуры проекта;
  • Открытые методы инкапсулируются и вызываются единообразно;
  • Данные и результаты разделены и понятны;
  • Поддержка настройки электронной почты;
  • Код Комментарии понятны.

1.4 Применимые лица

  • Тестировщики программного обеспечения с определенной базой тестирования;
  • Иметь определенные знания кода (Python/Java);
  • Стремление к изучению Интернета UIАвтоматизированное Все люди на обучении.

1.5 Цикл обучения

  • Через две недели-один месяц вы сможете вести веб самостоятельно. UIАвтоматизированное тестирование;

1.6 Рекомендации по обучению

  • Рекомендуется изучать и практиковать шаг за шагом в соответствии с порядком статей;
  • В статье представлен относительно подробный процесс от построения базовой среды до окончательного построения каркаса;
  • Статья ориентирована на реальную проектную практику и не содержит большого количества теоретических представлений и объяснений терминологии, поэтому тем, у кого нет базовых знаний, может потребоваться дополнительное время для пополнения своих знаний.

2 Детальный проект

2.1 Анализ требований

Провести подробный анализ требований к реализации, в основном следующим образом:

Функция

иллюстрировать

Использование фреймворка Unittest

Платформа автоматического тестирования с открытым исходным кодом, используйте ее напрямую

Запускайте пакетно или в конкретных случаях использования

Платформа Unittest может поддерживать эту функцию.

журнал журнала

Просто используйте библиотеку журналирования Python.

Создать отчет о тестировании HTML

Это достигается с помощью функции модуля HtmlTestRunner.py.

Разработка вариантов использования и разделение результатов

Используйте файлы конфигурации, такие как Excel, JSON и т. д., для организации данных вариантов использования.

Поддерживает чтение Json, conf, excel и других файлов конфигурации.

Здесь мы сначала используем Excel для управления элементами страницы.

Пакет входа пользователя

Непосредственно модульная функция входа в систему. фреймворка Просто установите и разберите Unittest.

Индивидуальный шаблон отчета об испытаниях

Использование модуля HTMLTestRuner.py

Отчет на нескольких языках

Использование модуля HTMLTestRuner.py

Функция создания снимков экрана

Использование метода save_screenshot в Selenium

2.2 Стек технологий

технология

версия ииллюстрировать

Python

V3.x (эта статья — 3.7) ===Поддержка языков программирования

Selenium

V3.141.0 === Идентификация и расположение элементов пользовательского интерфейса, элементов управления, элементов управления браузером и т. д.

HtmlTestRunner

Версия Python3 === Создать отчет о тестировании в формате Html

Logging

Python поставляется с === для создания журналов журналов.

Xlrd

V1.2.0 === метод чтения Excel

Unittest

Python поставляется с === платформой автоматического тестирования.

Smtplib

Python поставляется с === почтовым сервисом

email

Python поставляется с === почтовым сервисом

os

Python поставляется с системным модулем ===

PyCharm

Сообщество 2020.2, китайская версия

Операционная система

Windows 10 Максимальная 64-разрядная версия

другой

Последующие дополнения

3 Конструкция рамы

Вставьте сюда описание изображения
Вставьте сюда описание изображения

3.1 Описание структуры

Вставьте сюда описание изображения
Вставьте сюда описание изображения

3.2 Процесс выполнения фреймворка

Вставьте сюда описание изображения
Вставьте сюда описание изображения

4 Ожидаемые результаты

4.1 Журнал процесса тестирования

Вставьте сюда описание изображения
Вставьте сюда описание изображения

4.2 Отчет об испытаниях в формате HTML

Вставьте сюда описание изображения
Вставьте сюда описание изображения

4.3 Формат электронной почты с отчетом об испытаниях

Вставьте сюда описание изображения
Вставьте сюда описание изображения

5 специальных инструкций

Код в основном завершен. Если у вас есть хорошие предложения, вы можете поделиться своим опытом обучения.

6. Первая программа автоматического тестирования WebUI

***

Прежде чем приступить к созданию автоматизированной среды, мы сначала напишем простой сценарий автоматического тестирования, чтобы понять, что такое автоматическое тестирование веб-интерфейса и основные операции с элементами, чтобы создать основу для идентификации последующих платформ.

***

6.1 Основная теория селена

6.1.1 Установка селена

  • Откройте окно cmd и введите следующую команду для онлайн-установки: pip3. install selenium
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • После установки введите следующую команду в окне cmd, вы увидите, что селен установил pip list
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

6.1.2 WebDriverAPI

Selenium предоставляет множество WebDriverAPI, которые можно использовать для:

6.2 Установка драйвера браузера

  • Использование селена для управления элементом в браузере,Драйвер браузера должен быть установлен;
  • Это зависит от конкретной версии браузера;
  • В этой статье используется браузер Chrome версии 88.0.4324.182 (официальная версия) (32-разрядная версия);

6.2.1 Загрузка Chromedriver

Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.2.2 Установка Chromedriver

  • После загрузки имеется файл chromedriver.exe. Если это система w7, необходимо поместить chromedriver.exe в каталог установки браузера Chrome, а затем добавить каталог установки браузера Chrome в системную переменную среды if; это система w10, вам нужен chromedriver. Просто поместите .exe в каталог установки Python, как в этой статье:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

6.3 Идеи дизайна кода

6.3.1 новый скрипт pycharm

  • Откройте ранее созданный проект [Automated-UITest-demo], щелкните проект правой кнопкой мыши и создайте новый файл Python. Здесь создайте новый файл Python с именем test_baidu.
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • После создания существует дополнительный py-файл test_baidu следующим образом:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

6.3.2 Требования к автоматизации

Здесь мы проводим следующие тесты автоматизации пользовательского интерфейса: 1. Автоматически открывать браузер Chrome. 2. Введите URL-адрес Baidu. 3. Откройте домашнюю страницу Baidu и введите helloworld. 4. Разверните окно браузера. 5. Найдите helloworld и нажмите Enter. 6. Размер окна браузера уменьшен до 640*480. 7. Сначала вернитесь в браузер и снова введите csdn для поиска. 8. Очистите входной контент 9. Определите, заходить ли на официальный сайт csdn

6.3.3 Анализ требований

нуждаться

анализировать

Автоматически открывать браузер Chrome

Необходимо использовать webdriver.Chrome()

Введите URL-адрес Baidu

Используйте метод driver.get()

Откройте домашнюю страницу Baidu и введите helloworld.

Используйте метод send_keys()

Развернуть окно браузера

Используйте метод Maxim_window().

Найдите helloworld и нажмите Enter.

Используйте метод send_keys()

Размер окна браузера уменьшен до 640*480.

Используйте метод set_window_size().

браузер назад

метод назад()

Очистить входной контент

метод очистки()

суждение

driver.current_url метод для определения текущего URL

  • Подробную информацию об использовании вышеуказанных методов см. в [1.2 WebDriverAPI].

6.3.4 Расположение элемента

  • Вышеуказанное нуждаться уточнено,Затем следующим шагом будет выполнение позиционирования элемента.,Вероятно, вы можете разобрать его здесь.,Какой элемент нужен?

элемент

иллюстрировать

Метод позиционирования

Поле ввода Baidu

Используется для входа в helooworld

find_element_by_id

Найдите csdn и щелкните официальный сайт csdn.

Используется для имитации нажатия кнопки входа на официальный сайт csdn.

find_element_by_xpath

  • как насчет этогопозицияэлемент,Знаете, какой метод каления использовать?

О. Мы открываем домашнюю страницу Baidu и нажимаем [F12], чтобы открыть режим отладки браузера.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Б. Нажмите маленький треугольник в левом верхнем углу окна режима отладки.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

C. Наведите указатель мыши на поле ввода поиска Baidu.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

D. Щелкните один раз, а затем увидите атрибут элемента в поле ввода поиска, который является используемым методом позиционирования элемента.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4 Реализация кода

6.4.1 Введение пакетов/модулей

  • Откройте только что созданный файл test_baidu.py.
  • Затем введите следующее:
Язык кода:python
кодКоличество запусков:0
копировать
from selenium import webdriver  # Представляем веб-драйвер модуля селена
from selenium.webdriver.common.keys import Keys  # Ввод с клавиатуры, поэтому ИспользовалKeys  
import time  # элемент Время ожидания, поэтому введен модуль времени
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4.2 Откройте Байду

Язык кода:python
кодКоличество запусков:0
копировать
driver = webdriver.Chrome()  # Откройте браузер Chrome
driver.get("http://www.baidu.com")  # Введите URL-адрес Baidu

print("============Проверьте основные элементы управления браузером==========")
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4.3 Введите helloworld в поле поиска позиционирования и разверните окно.

Язык кода:python
кодКоличество запусков:0
копировать
def search():
    print("1、Найдите helloworld и нажмите Enter.......")
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys("helloworld")  # Введите «приветмир»
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys(Keys.ENTER)  # Нажмите Enter для поиска
    time.sleep(2)
    driver.maximize_window()  # Развернуть текущее окно
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4.4 Окно уменьшено до 640*480.

Язык кода:python
кодКоличество запусков:0
копировать
def windows_size():
    print("2、Размер окна браузера уменьшен до 640*480.......")
    time.sleep(2)
    driver.set_window_size(640, 480)  # Управляйте размером экрана браузера до 640*480.
    time.sleep(0.5)
    driver.maximize_window()  # Развернуть текущее окно
    time.sleep(2)
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4.5 Обновление окна

Язык кода:python
кодКоличество запусков:0
копировать
ef back_refresh():
    print("3. Сначала зайдите в браузер назад, введите csdn еще раз для поиска")
    driver.back()
    driver.find_element_by_id("kw").send_keys("csdn")  # Введите csdn
    time.sleep(1)
    driver.refresh() # обновить
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4.6 Очистить введенное содержимое

Язык кода:python
кодКоличество запусков:0
копировать
def serach_clear():
    print("4、Очистить входной контент......")
    driver.find_element_by_id("kw").send_keys("csdn")  # Введите csdn
    time.sleep(2)
    driver.find_element_by_id("kw").clear()
    time.sleep(0.5)
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4.7 Зайдите на официальный сайт csdn и оцените

Язык кода:python
кодКоличество запусков:0
копировать
def csdn():
    print("5. Войдите на официальный сайт csdn")
    driver.find_element_by_id("kw").send_keys("csdn")  # Введите csdn
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys(Keys.ENTER)  # Нажмите Enter для поиска
    time.sleep(2)
    driver.find_element_by_xpath("//*[@id='1']/h3/a[1]").click()
    time.sleep(2)
    windows = driver.window_handles
    driver.switch_to.window(windows[-1])
    now_url = driver.current_url
    m_get_url = "https://www.csdn.net/"
    if now_url == m_get_url:
        print("После прохождения обсуждения вы попали на официальный сайт csdn!")
    else:
        print("Вы не зашли на официальный сайт csdn, проверьте код!")
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.4.8 Методы вызова

Язык кода:python
кодКоличество запусков:0
копировать
search()
windows_size()
back_refresh()
serach_clear()
csdn()

driver.quit()  # Закрыть браузер
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.5 Полный исходный код

Язык кода:python
кодКоличество запусков:0
копировать
# Автор: Администратор
# Дата: 2021/2/24 15:15
# Имя файла: test_baidu.py
# Function:Открыть Байду Домашняя страница,В строке поиска введите «приветмир»

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()  # Откройте браузер Chrome
driver.get("http://www.baidu.com")  # Введите URL-адрес Baidu

print("============Проверьте основные элементы управления браузером==========")

def search():
    print("1、Найдите helloworld и нажмите Enter.......")
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys("helloworld")  # Введите «приветмир»
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys(Keys.ENTER)  # Нажмите Enter для поиска
    time.sleep(2)
    driver.maximize_window()  # Развернуть текущее окно


def windows_size():
    print("2、Размер окна браузера уменьшен до 640*480.......")
    time.sleep(2)
    driver.set_window_size(640, 480)  # Управляйте размером экрана браузера до 640*480.
    time.sleep(0.5)
    driver.maximize_window()  # Развернуть текущее окно
    time.sleep(2)

def back_refresh():
    print("3. Сначала зайдите в браузер назад, введите csdn еще раз для поиска")
    driver.back()
    driver.find_element_by_id("kw").send_keys("csdn")  # Введите csdn
    time.sleep(1)
    driver.refresh() # обновить

def serach_clear():
    print("4、Очистить входной контент......")
    driver.find_element_by_id("kw").send_keys("csdn")  # Введите csdn
    time.sleep(2)
    driver.find_element_by_id("kw").clear()
    time.sleep(0.5)

def csdn():
    print("5. Войдите на официальный сайт csdn")
    driver.find_element_by_id("kw").send_keys("csdn")  # Введите csdn
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys(Keys.ENTER)  # Нажмите Enter для поиска
    time.sleep(2)
    driver.find_element_by_xpath("//*[@id='1']/h3/a[1]").click()
    time.sleep(2)
    windows = driver.window_handles
    driver.switch_to.window(windows[-1])
    now_url = driver.current_url
    m_get_url = "https://www.csdn.net/"
    if now_url == m_get_url:
        print("После прохождения обсуждения вы попали на официальный сайт csdn!")
    else:
        print("Вы не зашли на официальный сайт csdn, проверьте код!")

search()
windows_size()
back_refresh()
serach_clear()
csdn()

driver.quit()  # Закрыть браузер
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose