Рецепт автоматизированных тестов веб-сайтов с помощью Python Selenium и Headless Chrome в Docker

1656657970 reczept avtomatizirovannyh testov veb sajtov s pomoshhyu python selenium i headless

от Joyz

BGn6m8EeDayZcsplop1t9EJHd34dgIwRC0lQ
Фото из офиса Oursky в Гонконге

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

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

Ниже приведено руководство для моего репозитория Github с открытым кодом с более чем 100 000 изображений докеров, чтобы помочь командам разработчиков и разработчикам-фрилансерам настроить собственные автоматизированные тесты.

Наша задача

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

Настройка безголового хрома

Запуск браузера Chrome в Docker для запуска теста Selenium занимает всего минуту. Когда он заработает, он будет работать с любыми автоматизированными сборниками CI.

Вот пример:

Сначала откройте терминал и перейдите к рабочему каталогу.

$ cd [your working directory]

Затем извлеките и запустите этот образ докера с joyzoursky/python-chromedriver. Мы запустим тест Selenium в контейнере Docker.

$ docker run -it -v $(pwd):/usr/workspace joyzoursky/python-chromedriver:3.6-alpine3.7-selenium shUnable to find image 'joyzoursky/python-chromedriver:3.6-alpine3.7-selenium' locally3.6-alpine3.7-selenium: Pulling from joyzoursky/python-chromedriverff3a5c916c92: Pull complete471170bb1257: Pull completed487cc70216e: Pull complete9358b3ca3321: Pull complete78b9945f52f1: Pull complete66eb40d9fb29: Pull complete36cb996dbd54: Pull complete8e6f0ca23b1a: Pull completed5a3895f190c: Pull completeDigest: sha256:c51c240f1a472b0f252e96cd39678c7d039b757b83e46bf8ed182e95caaf02e7Status: Downloaded newer image for joyzoursky/python-chromedriver:3.6-alpine3.7-selenium

Теперь контейнер готов. Давайте перейдем в рабочую область и попробуем код.

/ # cd /usr/workspace/

Теперь мы можем написать сценарий нашего теста

Давайте запустим Python.

/usr/workspace # pythonPython 3.6.4 (default, Jan 10 2018, 05:20:21)[GCC 6.4.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>>

Перед попыткой кода импортируйте веб-драйвер Selenium из предустановленного пакета.

>>> from selenium import webdriver

Тогда давайте запустим безголовый Chrome. Некоторые параметры необходимо передать драйверу, чтобы избежать сбоя при запуске.

>>> chrome_options = webdriver.ChromeOptions()>>> chrome_options.add_argument('--no-sandbox')>>> chrome_options.add_argument('--window-size=1420,1080')>>> chrome_options.add_argument('--headless')>>> chrome_options.add_argument('--disable-gpu')>>> driver = webdriver.Chrome(chrome_options=chrome_options)

В настоящее время браузер уже открыт в контейнере, но мы его не видим. Давайте попробуем зайти на этот сайт и проверить внутренний текст верхней правой кнопки.

d8pHoiJdyENTGuhTRqyEMGsJ2NufawIOAFfQ
>>> driver.get(' el = driver.find_element_by_class_name('btn-header')>>> el.text'START YOUR PROJECT'

Давайте найдем элемент, с которым мы хотим взаимодействовать, например кнопку в заголовке “btn-header”.

Понял! Теперь давайте попытаемся вызвать нажатие кнопки.

>>> el.click()>>> driver.current_url'https://oursky.com/enquiry/general/'

Успех! После нажатия кнопки драйвер переходит к ожидаемому URL-адресу.

Теперь вы можете запускать сценарии в контейнере или использовать изображения в сценарии сборки CI. Вы также можете создать свой образ, установив больше пакетов pip, чтобы автоматизировать более мощные тесты.

Наслаждайтесь!

Здесь можно найти репозиторий GitHub с изображением докера с настроенной средой тестирования.

Также просмотрите полный пример сценария Python Selenium, чтобы вы могли настроить его в свой тест.

0pEr4VFOcP6iQEO9cTpQjFwcPGq2Jq4Qlzyr

Я работаю в компании Oursky, занимающейся разработкой программного обеспечения в Гонконге и Тайване. Мы создаем цифровые продукты для клиентов и инструменты для разработчиков, такие как наш BaaS с открытым кодом, Skygear, что помогает разработчикам быстрее создавать приложения.

Добавить комментарий

Ваш адрес email не будет опубликован.