Скриншот плана этой статьи:
1. Введение в автоматизированное тестирование 1. Базовое введение 1.1 Автоматизация
Концепция: Процесс автоматического достижения заданных целей с помощью машинного оборудования вместо ручного труда.
преимущество:
1.2 Автоматизированное тестирование
программное обеспечениетест:Убедитесь, что система соответствует указанным требованиям.、Поймите разницу между ожидаемыми результатами и фактическими результатами.
Автоматическое тестирование программного обеспечения: процесс, позволяющий программам заменять людей для проверки функций системы
Сценарии применения:
преимущество:
Недоразумение:
Категория: автоматизация пользовательского интерфейса, автоматизация интерфейса, тестирование производительности, модульное тестирование.
Автоматизация пользовательского интерфейса: Интернет, мобильные устройства
Веб-сторона:
На каком этапе начинается автоматизированное веб-тестирование?
Категория веб-автоматического тестирования - тестирование черного ящика (функциональное тестирование)
Мобильный терминал: приложения APP, мини-программы, страницы H5.
2. Строительство окружающей среды
Базовая среда для автоматизации пользовательского интерфейса включает в себя:
3. Инструменты тестирования 4. Процесс тестирования 5. Структура тестирования 6. Базовый код (предполагаемая концепция)
Базовый код веб-автоматизации
ˆ """ Базовый код веб-автоматизации """
# 1、Модуль импорта
from [selenium][2] import webdriver
from time import sleep
# 2. Создайте экземпляр объекта браузера: имя класса ()
# Создайте экземпляр объекта Google Chrome
# driver = webdriver.Chrome()
# Создайте экземпляр объекта Firefox
driver = webdriver.Firefox()
# 3. Откройте веб-страницу: заголовок протокола должен быть включен.
driver.get('http://www.baidu.com')
# 4. Наблюдайте за эффектом
sleep(6)
# 5. Закройте страницу
driver.close()
2. Инструменты 1. Основное введение
— это инструмент автоматического тестирования веб-приложений.
Особенности:
История развития:
1.0:
ˆКомпоненты: IDE, Grid, основные компоненты RC.
Grid
ˆ Основные компоненты RC
недостаток:
2.0:
Особенности:
3.0:
Компоненты: IDE, Grid, основные компоненты.
IDE:
Grid:
Основные компоненты:
Применение: вызов Python для написания тестовых сценариев для работы веб-приложений.
ПРИМЕЧАНИЕ. Во всех браузерах версии 3.0 в дополнение к платформе необходимо установить соответствующий драйвер.
Особенности:
2. Установка среды 2.1 Уже установлено
pip — это общий инструмент управления пакетами Python, который предоставляет функции поиска, загрузки, установки и удаления пакетов Python.
2.2 Установка 2.3 Установка драйвера браузера
Загрузите драйвер браузера:
Браузер Firefox:
2) Версии ниже 48: 2.x + встроенный драйвер.
Гугл Хром:
Браузер Edge (понятно):
Конфигурация переменной среды: добавьте каталог, в котором находится файл драйвера, в переменную среды Path или непосредственно поместите его в каталог установки Python, поскольку Python был добавлен в путь.
3.Принцип работы 4.Базовый код
ˆˆ # Пакет руководств
from selenium import webdriver
import time
# Создать объект драйвера браузера
# Браузер Хром:
driver = webdriver.Chrome()
# Браузер Фаерфокс:
driver = webdriver.Firefox()
# Крайний браузер:
driver = webdriver.Edge()
# Открыть веб-страницу
driver.get("http://www.baidu.com")
# пауза
time.sleep(3)
# Закрыть объект драйвера
driver.quite()
5. API 5.1 Позиционирование элемента
Метод позиционирования элемента
ˆˆ # Пакет руководств
from selenium import webdriver
#Находим элемент
# driver.find_element_by_xxx()
driver.find_element_by_id()
driver.find_element_by_name()
driver.find_element_by_class_name()
driver.find_element_by_tag_name()
driver.find_element_by_link_text()
driver.find_element_by_partial_link_text()
driver.find_element_by_xpath()
driver.find_element_by_css_selector()
# Разместите группу элементов
# driver.find_elements_by_xxx()
driver.find_elements_by_id()
driver.find_elements_by_name()
driver.find_elements_by_class_name()
driver.find_elements_by_tag_name()
driver.find_elements_by_link_text()
driver.find_elements_by_partial_link_text()
driver.find_elements_by_xpath()
driver.find_elements_by_css_selector()
скриншот:
Уведомление:
3) Если вы снова нажмете кнопку синтаксиса после вызова метода позиционирования элемента, и все подсказки представляют собой методы списка, то метод будет содержать s.
4) Если вы нажмете «Синтаксис» после вызова метода позиционирования элемента, подсказками будут все методы элемента, и метод не содержит s.
Метод 2:
ˆˆ # Пакет руководств
from selenium.webdriver.common.by import By
# метод find_element
# driver.find_element(By.xx, 'xxx')
driver.find_element(By.ID, 'значение идентификатора')
driver.find_element(By.NAME, «значение имени»)
driver.find_element(By.CLASS_NAME, 'значение class_name')
driver.find_element(By.TAG_NAME, 'значение tag_name')
driver.find_element(By.LINK_TEXT, 'значение link_text')
driver.find_element(By.PARTIAL_LINK_TEXT, 'значение part_link_text')
driver.find_element(By.XPATH, 'значение xpath')
driver.find_element(By.CSS_SELECTOR, 'значение css_selector')
Метод позиционирования элемента
предоставляет восемь способов позиционирования элементов:
1)id
Процесс: браузер находит элемент, и элемент вводит информацию.
Описание: Когда целевой элемент существует. idзначение атрибутаселен максимизирует браузер,приоритетное использование id Методы поиска элементов
2)name
3)
4)
5)
6)
7)XPath
Основное введение: XPath — это XML Path это аббревиатура XML Язык, на котором можно найти информацию об элементах в документе.。HTMLможно рассматривать какXMLреализацияселен максимизирует браузер,так Пользователи могут использовать этот мощный язык для поиска элементов в веб-приложениях. XML: язык разметки, используемый для хранения и доставки данных. Суффикс, заканчивающийся на .xml.
ПРИМЕЧАНИЕ. Независимо от того, какая стратегия (метод) XPath, метод позиционирования один и тот же. Разные стратегии определяют только метод записи параметров метода: h('Стратегия XPath').
Метод позиционирования XPath: = driver.h(xpath)
Стратегия позиционирования XPath
1) Определение пути
Относительный путь: соответствует элементам на любом уровне, без ограничения положения элемента
Формат: относительный путь начинается с //
2) Использовать атрибуты-позиционирование элемента
проиллюстрировать:
3) Атрибуты и логическое сочетание – позиционирование
4) Сочетание уровней и атрибутов – позиционирование
XPath-расширение (динамические свойства):
Динамические атрибуты: атрибуты позиционируемого элемента являются динамическими, то есть каждый раз, когда страница открывается, атрибуты элемента, такие как идентификатор или класс этого элемента, генерируются динамически.
Как определить динамические атрибуты: Как правило, если вы видите строку чисел, объединенную в атрибутах элемента, она, скорее всего, будет динамической. Чтобы заметить разницу, обновите браузер и еще раз посмотрите на элемент. Числовая строка в значении атрибута изменилась, что означает, что это динамический атрибут.
2)//*(@, 'xxx')
3)//*starts-with(@, 'xxx')
XPath предоставляет три метода для поиска значений некоторых атрибутов:
8)CSS
Основное введение:
Метод позиционирования CSS: = driver.()
Общие стратегии позиционирования CSS
1) выбор идентификатора
2) селектор класса
3)Выбор элемента
4)Выбор атрибута
5)Выбор уровня
Формат 2: позиционируется и является дочерним элементом
Уведомление:В иерархических отношениях «родитель-потомок» пробелы также могут использоваться для соединения верхних и нижних иерархических стратегий.(>За ним должен следовать дочерний элемент,Его нельзя использовать, если он не является прямым дочерним элементом.>)
Расширения CSS:
Формат 2: имя атрибута имени тега $='содержимое в конце значения атрибута'
Формат 3: имя атрибута имени тега*='любая часть значения атрибута'
Уведомление:Имя тега можно не указывать!
5.2 Операции с элементами
Причины срабатывания элемента:
Общие операции над элементами:
1、click()
2、(value)
3、clear()
проиллюстрировать: на практике,Обычно для элементов поля ввода,Сначала нужно все очистить,Выполните ввод еще раз,Избегайте ошибок в работе. Поэтому () иclear() обычно работают парами.,Прямо сейчас:
Расширение: Случаи ошибок
Правильно писать:
Часто используемые методы получения информации об элементе:
1、size
2、text
Подсказка: размер, текст: являются атрибутами, при вызове скобок нет, например: xxx.size
3、('xxx')
4、()
5、()
6、()
5.3 Операции со специальными элементами
Тип поля выбора операции:
Раскрывающиеся списки и флажки
Операции с раскрывающимся списком:
Выберите класс:
ˆˆ # Пакет руководств
from selenium.webdriver.support.select import Select
# создать экземпляр объекта
select = Select(element)
Как работать:
Выберите этапы реализации класса:
3) Способ вызова:
Работа с всплывающим окном
Категории всплывающих окон
Настраиваемое всплывающее окно: инкапсуляция внешнего кода
Уведомление:
alert = driver.switch_to.alert
# Получить информацию о всплывающем окне (необязательно): этот шаг необходимо выполнить перед обработкой операции всплывающего окна.
print('Всплывающее сообщение:', alert.text)
# Принять параметры диалога
alert.accept()
# Отменить диалоговую опцию
alert.dismiss()
Этапы обработки всплывающего окна:
# Получить объект всплывающего окна (переключиться на всплывающее окно)
alert = driver.switch_to.alert
# Вызов метода для обработки (возврат текстовой информации в оповещении/подтверждении/подсказке)
alert.text
# Принять параметры диалога
alert.accept()
# Отменить диалоговую опцию
alert.dismiss()
Работа с полосой прокрутки:
Концепция: компонент, который может управлять диапазоном отображения страницы.
Причины изучения операций с полосой прокрутки:
работа js-скрипта
Не существует прямого метода управления полосой прокрутки в , но он предоставляет метод для исполняемых сценариев, поэтому мы можем достичь цели управления полосой прокрутки через сценарии.
Код:
Этапы реализации:
# Установите скрипт JavaScript для управления полосой прокрутки (0: левое поле; 1000: верхнее поле; единица измерения: пиксель; описание: в обратном направлении, вам нужно только вернуть координаты в ноль)
js = "window.scrollTo(0, 1000)"
# селен вызывает метод для выполнения сценария JavaScript
driver.execute_script(js)
Операция переключения кадров:
Концепция: Фреймворк на HTML-страницах. Его основная функция — отображение другого элемента страницы в указанной области текущей страницы. Метод переключения кадра инкапсулирован.
форма кадра:
# Форма 1:
# Форма вторая:
Как переключать кадры:
# Метод переключения на указанный кадр
driver.switch_to.frame(frame_reference)
# Как восстановить страницу по умолчанию
driver.switch_to.default_content()
'''
Frame_reference: это может быть имя, идентификатор или позиционированный элемент фрейма кадра.
# Атрибуты в скобках — это фрейм
1、driver.switch_to.frame('frame_name')
# Если на странице только один фрейм, можно заполнить скобки 1
2、driver.switch_to.frame(1)
# Если на странице несколько фреймов, вы можете использовать эту форму индекса тегов.
3、driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
'''
Операция переключения нескольких окон:
В течение жизненного цикла браузера (от открытия до закрытия) любое окно имеет уникальное значение дескриптора, и операция переключения окон может быть завершена через значение дескриптора. Handle: дескриптор, уникальный идентификационный код окна. Он инкапсулирует методы получения текущего дескриптора окна, получения всех дескрипторов окон и переключения на указанный дескриптор окна.
Уведомление: Если вы все еще хотите снова использовать исходную страницу,Обязательно завершите переключение окон,Вернитесь на исходную страницу, прежде чем продолжить операцию (даже если вы переключились на новое окно, а оно было закрыто),Также вернитесь на исходную страницу)
метод:
Шаги:
# Получить дескрипторы всех окон (включая новые окна)
handles = driver.window_handles
# print(handles)
# print(type(handles))
# Окно переключения (список -1 индекс Соответствующее значение всегда обрабатывать значение последнего окна)
driver.switch_to.window(handles[-1])
Код:
# Получить дескрипторы всех окон (включая новые окна)
handles = driver.window_handles
# print(handles)
# print(type(handles))
# Окно переключения (список -1 индекс Соответствующее значение всегда обрабатывать значение последнего окна)
driver.switch_to.window(handles[-1])
# Заполните информацию в новом окне
driver.find_element_by_id('userA1').send_keys('admin1')
sleep(2)
# Закрыть новое окно (функция метода close(): закрыть текущую страницу)
driver.close()
# Вернитесь в исходное окно для работы.
driver.switch_to.window(handles[0])
# Заполните информацию на исходной странице окна.
driver.find_element_by_id('userA').send_keys('admin')
sleep(2)
# Выйти из браузера
driver.quit()
Операция моментального снимка:
Автоматизированные сценарии выполняются программами, поэтому иногда выводимое сообщение об ошибке не очень понятно. Если вы сохраните снимок экрана текущего окна при возникновении ошибки выполнения, вы сможете очень интуитивно увидеть причину ошибки по изображению.
Сценарии применения:существоватьавтоматизациятестсередина,Когда возникает ошибка,Вы можете сохранить снимок экрана текущей страницы операции в указанном месте, сделав снимок экрана.,Помощь в принятии решений и анализе причин ошибок. в,Предоставляет метод скриншота,Нам просто нужно позвонить.
Как сделать скриншот окна:
расширять
Метод 1:
# Пакет гида
import time
# Установить временную метку
now_time = time.strftime('%Y%m%d_%H%M%S')
# Вставить временную метку в название изображения
driver.get_screenshot_as_file('./info_{}.png'.format(now_time))
Способ второй:
# Пакет гида
import time
driver.get_screenshot_as_file('./info_{}.png'.format(time.strftime('%Y%m%d_%H%M%S')))
Способ третий:
# Пакет гида
from time import sleep, strftime
driver.get_screenshot_as_file('./info_{}.png'.format(strftime('%Y%m%d_%H%M%S')))
btn = driver.find_element_by_tag_name('button')
btn.screenshot('./btn.png')
Действие проверочного кода:
Проверочный код: случайно сгенерированная информация (цифры, буквы, китайские иероглифы, картинки, арифметические вопросы) и т. д. с целью предотвращения вредоносного поведения запросов и повышения безопасности приложения)
Причина: В веб-приложениях большинство систем требуют от пользователей ввода проверочного кода при входе и регистрации. При разработке сценариев автоматического тестирования необходимо временно решить проблему с проверочным кодом, иначе последующие тесты не могут быть продолжены. В . нет метода обработки проверочных кодов. Здесь мы представляем несколько распространенных методов обработки проверочных кодов.
Как обращаться с кодами подтверждения
Вопрос на собеседовании: Общие стратегии обработки проверочных кодов
Подведите итог:
При тестировании функции входа в систему стратегия обработки кода проверки: удалить код проверки (в тестовой среде), установить универсальный код проверки (в производственной среде и тестовой среде).
Когда нет необходимости тестировать функцию входа в систему, стратегия обработки кода подтверждения: запись файлов cookie, чтобы пропустить вход в систему.
Операция с файлами cookie:
Концепция использования файлов cookie:
Процесс работы с файлами cookie:
Принцип обхода файлов cookie:
Уведомление:
Как работать с файлами cookie:
Шаги по использованию файлов cookie:
5.4 Ожидание элемента
Ожидание элемента: если элемент не найден при его поиске, он будет ждать определенное время.
Установите причину ожидания элемента:
Категория: неявное ожидание, явное ожидание, принудительное ожидание.
Неявное ожидание: при обнаружении элемента, если элемент может быть найден, элемент будет возвращен напрямую, без запуска ожидания; если элемент не может быть найден, элемент будет найден снова через определенный период времени, если указанный элемент не был найден; был найден при достижении максимальной продолжительности, элемент выдает исключение «Элемент не существует»
Уведомление: При активации неявного ожидания, хотя целевой элемент уже появился, он будет продолжать ждать, поскольку другие элементы на текущей странице не были загружены, тем самым увеличивая время выполнения кода.
Например: водитель.(10)
Явное ожидание: при обнаружении указанного элемента, если элемент может быть найден, элемент будет возвращен напрямую, без запуска ожидания; если элемент не может быть найден, элемент будет обнаружен снова через определенный период времени, если он не был найден; обнаруживается при достижении максимальной продолжительности. Если указан указанный элемент, будет выдано исключение тайм-аута.
ˆˆ # Пакет руководств
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver, timeout, poll_frequency=0.5)
Вызов метода: до(метод)# До...
Например:
Принудительное ожидание:
Метод 2:
Сравнение неявного и явного ожидания:
5.5 Управление мышью
Причина: теперь в веб-продуктах есть богатые методы взаимодействия с мышью.,какWebПлатформа автоматизированного тестирования,Нужно разобраться с этими Управлением Сценарии применения мышью.
Общие операции с мышью: щелчок, щелчок правой кнопкой мыши, двойной щелчок, наведение, перетаскивание и т. д. инкапсулируют методы работы с мышью в классах;
добрый:
ˆˆ # Пакет руководств
from selenium import webdriver
from selenium.webdriver import ActionChains
# Создать экземпляр объекта браузера
driver = webdriver.Chrome()
# Создайте экземпляр объекта мыши и свяжите объект браузера.
action = ActionChains(driver)
Часто используемые операции с мышью:
1)()
2)()
3)()
4)()
5)()
расширять:Другой вид Управление Как писать мышью: (на других языках программирования это называется цепным программированием)
5.6 Работа с клавиатурой
Размышление: как имитировать ввод некоторых клавиш или комбинаций клавиш на клавиатуре, например: Ctrl+C, Ctrl+V. Клавиши клавиатуры инкапсулированы в класс Keys:
-Класс клавиш
ˆˆ # Пакет руководств
from selenium.webdriver.common.keys import Keys
# Создать экземпляр объекта браузера
driver = webdriver.Chrome()
# позиционированный элемент Идентификатор пользователя A.
user = driver.find_element_by_id('userA')
Часто используемые операции с клавиатурой:
1)(Keys.)
2)(Keys.SPACE)
3)(Keys.TAB)
4)(Keys.ESCAPE)
5)(Keys.ENTER)
6)(Keys., 'a')
7)(Keys., 'c')
8)(Keys., 'v')
5.7 Работа браузера
Подумайте: не является ли размер окна браузера по умолчанию при запуске сценария полноэкранным? Как обновить страницу?
Распространенные методы работы браузера
1)()
2)(width, height)
3)(x, y)
4)back()
5)()
6)()
7)close()
8)quit()
9)title
10)
Подведите итог:объединить Операции браузера и неявное ожидание для улучшения Интернета Базовый код для автоматизации тестирования пользовательского интерфейса выглядит следующим образом:
# Модуль импорта
from time import sleep
from selenium import webdriver
# Создать экземпляр объекта браузера
driver = webdriver.Chrome()
# развернуть браузер
driver.maximize_window()
# неявное ожидание
driver.implicitly_wait(30)
# открыть страницу
driver.get('')
# Эффект отображения
sleep(3)
# Выйти из браузера
Наконец: [Руководства, которые могут помочь вам в автоматизированном тестировании]
Наконец, я хотел бы поблагодарить всех, кто внимательно прочитал мою статью. Глядя на рост числа поклонников и внимания, всегда есть некоторая вежливость. Хотя это не очень ценная вещь, если вы умеете ею пользоваться, вы можете взять ее напрямую. .
Информация об интервью
Мы должны научиться тестировать программное обеспечение, чтобы найти высокооплачиваемую работу. Следующие вопросы для интервью взяты из последних материалов интервью от таких интернет-компаний первого уровня, как Alibaba, Tencent, Byte и т. д., и после окончания интервью руководители Alibaba дали авторитетные ответы. Я считаю, что каждый сможет найти удовлетворительную работу, воспользовавшись этим набором материалов для собеседований.
Выше приведены вспомогательные ресурсы, которые я собрал. Эти ресурсы должны стать наиболее полным и полным хранилищем для подготовки для друзей по тестированию программного обеспечения. Чтобы лучше организовать каждый модуль, я также ссылался на множество высококачественных сообщений в блогах и проектов в Интернете. Стремитесь Не упустить все знания. Многие друзья использовали это содержимое для просмотра и получили предложения от крупных производителей, таких как BATJ. Этот склад также помог многим ученикам, изучающим тестирование программного обеспечения, и я надеюсь, что он поможет и вам.
Всего в этой статье 3356 слов, а среднее время чтения ≈ 9 минут.