What is selenium? introduction to selenium automation testing

Введение

В этой статье вы узнаете как пользоваться Selenium без привязки к какому-то языку программирования.

О написании тестов на

Python

с использованием Selenium читайте в статье

Selenium + Python

. Если вас интересует

Java

рекомендую статью

Selenium + Java

Selenium WebDriver — это инструмент для автоматизации действий веб-браузера.

В большинстве случаев используется для тестирования Web-приложений, но этим не ограничивается.

Сам по себе Selenium Webdriver в отличие, например, от Selenium IDE ничего для тестирования не содержит,
поэтому используется в связке с библиотеками для тестирования, которые есть в большинстве современных языков
программирования.

В

Python

это

unittest

, nose,

pytest

и другие. В

Java

это JUnit.

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

регулярного получения данных из различных источников (сайтов).

До появления

PlayWright

Selenium Webdriver использовался в

RobotFramework

Создание скриншотов

В процессе автоматизации вам может потребоваться сделать скриншот всей страницы или определенного веб-элемента.

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

Метод Selenium WebDriver используется для создания скриншотов веб-страницы.

Эта сертификация предназначена для профессионалов, желающих развить передовые практические навыки в области автоматизации тестирования с Selenium на Python и вывести свою карьеру на новый уровень.

Краткий обзор сертификации Selenium Python 101 от LambdaTest:

Заключение

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

Эту шпаргалку по Selenium можно использовать в качестве руководства (или справочника) для быстрого ознакомления с командами, которые могут представлять интерес для вашего случая. Я надеюсь, что вы найдете ее полезной, и обязательно дайте мне знать, если столкнетесь с какой-либо командой Selenium, которая должна стать ее частью.

Счастливого автоматизированного тестирования с Python!

Метод используется для настройки желаемых размеров окна браузера (ширина и высота).

Что такое UI-тестирование и в чем его польза?

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

Интересуетесь свежими статьями по продуктовому дизайну (UX/UI)?

Подписывайтесь на канал в
Telegram
|
,
Instagram,

Facebook

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

5 аспектов, которые изучает UI-тестирование:

  • Визуальный дизайн
  • Функциональность
  • Юзабилити
  • Производительность
  • Согласованность

UI-тестирование выполняют вручную и с помощью автоматизированных методов. Цель UI-тестирования — обеспечить соответствие спецификации.

Расширяем потенциал

Вы удостоверились в том, что можете управлять браузером в режиме headless (без головы т.е. без графического интерфейса), используя Python, теперь перейдем к практике.

  1. Вам нужно включать музыку;
  2. Вам нужно искать и просматривать музыку;
  3. Вам нужна информация о проигрываемой музыке.

Для начала, отправимся на https://bandcamp.com и покопаемся в инструментах разработки вашего браузера. Вы увидите большую и яркую кнопку воспроизведения внизу экрана с HTML атрибутом class, который содержит значение «playbutton«. Проверим, как это работает:

Python

opts = Option()
opts.set_headless()

browser = Firefox(options=opts)
browser.get(‘https://bandcamp.com’)
browser.find_element_by_class(‘playbutton’).click()

1
2
3
4
5
6

opts=Option()

opts.set_headless()

browser=Firefox(options=opts)

browser.get(‘https://bandcamp.com’)

browser.find_element_by_class(‘playbutton’).click()

Вы должны слышать музыку! Запустите трек и оставьте его, вернитесь обратно в веб браузер. Рядом с кнопкой воспроизведения находится окно поиска. Еще раз, нужно проверить эту секцию. Вы найдете, что каждый видимый и доступный трек имеет значение класса «discover-item«, а каждый объект кликабельный. В Python, проверка выполняется следующим образом:

Python

tracks = browser.find_elements_by_class_name(‘discover-item’)
len(tracks) # 8
tracks.click()

1
2
3

tracks=browser.find_elements_by_class_name(‘discover-item’)

len(tracks)# 8

tracks3.click()

Следующий трек должен воспроизвестись. Это первый шаг в исследовании bandcamp при помощи Python! Вы уделите несколько минут, переключая разные треки в пространстве Python, но скромная библиотека из 8 песен может быстро надоесть.

Making your requests

First things first, open Postman or something similar.

To start controlling your browser you first need a session. To create your session, make a POST request to your newly running server like this:

POST requesthttp://localhost:9515/sessionBody of your POST request{  “capabilities”: {    “browserName”: “chrome”  }}

Once you make the POST request, you should see Chrome open up. In the response body, you should see the , hang onto that because you will need it. Mine was: 3b784ca884984ecce8868025285021c0

Now we are controlling Chrome. Let’s navigate to Google!

We will be making a POST request, that contains our session ID in the URL like this:

POST requesthttp://localhost:9515/session/3b784ca884984ecce8868025285021c0/urlBody of your POST request{  "url": "https://www.google.com"}

You should see Chrome navigate to Google.

Next, let’s find an element that is on the page. Let’s get the search bar!

POST requesthttp://localhost:9515/session/3b784ca884984ecce8868025285021c0/elementBody of your POST request{  "using": "xpath",   "value": "//input"}

We should see a return like this:

Return Value{  "value": {    "element-6066-11e4-a52e-4f735466cecf": "b8363554-d3a1-4342-b1f1-92ae2d492c14"  }}

Let’s keep track of that element value so we can type into the search bar.

Now we want to type into that element with:

POST requesthttp://localhost:9515/session/3b784ca884984ecce8868025285021c0/element/b8363554-d3a1-4342-b1f1-92ae2d492c14/valueBody of your POST request{  "text": "selenium automation"}

We should see entered into the search bar!

That’s it for now on the WebDriver, but if you want to see more of these API calls, check out the documentation here:

Creating the Project

I know I said I recommend using an automation framework instead of building it yourself, but I do believe it is important to understand how it all works. So that is what we are going to do here.

For simplicity sake, we will be running one test at a time, so we don’t quite need a Selenium Grid. But we are going to use a Selenium Server.

We will be setting up this Selenium Server locally, but the same principles apply when setting it up on a remote machine.

As I mentioned earlier, I usually use JavaScript, so we will be making this with Node.js. So if you want to follow along, you will need to install Node. I am using version 10.16 at the time of this writing.

To use the Selenium Server you will also need Java.

I won’t be using shortcut methods (such as this package: in order to allow everyone (including people who use other languages) to follow along with the Selenium Server setup.

Перетаскивание веб-элемента

Перетаскивание объектов является одним из широко используемых сценариев в популярных приложениях (или программах), таких как Canvas, Google Drive, Trello, Asana и т.д. Метод (элемент, цель) в Selenium помогает автоматизировать функционал перетаскивания веб-элементов из источника и переноса их в целевую область (или элемент).

У класса в Selenium есть два метода, с помощью которых вы можете выполнять операции перетаскивания при тестировании кроссбраузерной совместимости. Обязательно ознакомьтесь с нашим подробным руководством, в котором есть информация о том, как выполнять перетаскивание в Selenium.

Вот простой пример использования метода :

Leapwork: A codeless automation tool

There are many benefits to adopting a test automation tool that doesn’t require any coding. Leapwork is such a tool.

This no-code platform requires zeros coding skills (you don’t even have to be able to read code, which is otherwise required in many other tools automation tools that claim to be code-free), and it’s easy to use because of its visual drag and drop interface.

This makes Leapwork a testing platform that enables fast, error-free test execution. It also enables the CI/CD-focused organization to deliver quality at speed.

To be able to understand the full benefits that Leapwork offers over Selenium, we encourage you to read our comparison of Selenium vs. Leapwork. This comparison gives insight into usability and adoption, documentation and governance, applications support, as well as test execution and integrations. 

Running the test

In our file, we want to add a script called . We want this test script to run :

In your terminal run the script:

You should see:

  1. Your browser open
  2. Navigation to Google
  3. Typing of in the search bar
  4. Google search executed
  5. Google search results

After the browser has closed you should see this in your console:

Congrats! You have now set up a Selenium Server, and created Automated UI tests to use that server!

Final Thoughts

So we went over a lot of information here. We covered different components of Selenium, including the Selenium IDE, Selenium RC (kinda), Selenium WebDriver, WebDriver implementations (BrowserDriver), Selenium Server, Selenium Grid, and how to create your own automated tests running against a Selenium Server!

If I missed anything please let me know in the comments below, I’d love to be able to clarify or adjust a few things!

P.S. For all the nitty-gritty details of the WebDriver standard, read the documentation here! https://w3c.github.io/webdriver/

Обратная связь, лицензия и сотрудничество

Лицензия проекта позволяет вам производить любые действия с кодом проекта, которые может ограничить лишь ваша фантазия. (http://unlicense.org/)
Код можно видоизменять, использовать в коммерческих целях, выкладывать на торренты и майнить биткоины, если хотите.

Но, мне бы было очень полезно получить от вас обратную связь. Оставить комментарии можно как тут, так и на странице проекта на Github.
А лучше всего, если вы отправите реальный чёткий пацанячий pull-request в репозиторий на github.
Но, если это будет огромное изменение с перелапачиванием половины кода, то, неплохо было бы вначале его обсудить.

Над чем можно работать? – Там поле почти не паханное:

  • Документация
  • Туториал
  • Новый полезный код, решающий реальные проблемы
  • Новые демонстрационные проекты
  • Инструкции

Компоненты селена:

Селен как инструмент имеет следующие компоненты: 

Селеновая среда разработки:

  • Selenium IDE или среда интегрированной разработки Selenium — это самая начальная версия Selenium для автоматизации веб-приложений.
  • Selenium IDE — это своего рода инструмент для записи и воспроизведения, который вы можете использовать в качестве плагина браузера и записывать ваши веб-действия в ваших приложениях, и его можно сохранить как скрипт, а позже вы можете запустить тот же записанный скрипт для выполнения и выполнения проверки.
  • Но у него есть несколько ограничений, таких как:
    • Вам нужно запустить записанный скрипт, модификация скрипта не такая гибкая, или вы не можете настроить свой вариант использования и скрипты в своем собственном независимом подходе.
    • Исполнение носит очень медленный характер.
    • В основном поддерживает Firefox, хотя есть некоторые настройки, которые вы можете сделать, чтобы запустить записанный скрипт в других браузерах, таких как Google Chrome.
    • параллельное выполнение не поддерживается.
    • Мобильное тестирование не поддерживается.
    • Генерация отчетов совсем нехорошая.
  • На самом деле это предварительная версия Selenium, с ее помощью вы можете выполнять очень ограниченную автоматизацию тестирования для своих веб-приложений.

Селен RC

Selenium Remote Control — это следующая версия Selenium, которую часто называют Selenium 1.0.

Как Selenium RC работает внутри:

Selenium RC состоит из двух основных компонентов, таких как Selenium Server и Selenium Client.

Сервер Selenium запускает браузеры и выполняет команды selenium, которые вы написали как сценарий автоматизации тестирования с использованием клиентских библиотек Selenium, доступных на разных языках.

Selenium Server преобразует команды / тестовые сценарии в нечто, называемое командами Selenese, и действует как HTTP-прокси.

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

Шаги по использованию Selenium RC: 

  • Установите сервер Selenium-RC.
  • Установить селен-сервер
    • Вы можете настроить Selenium Server, просто загрузив файл selenium-server.jar и запустив его в своей системе, используя следующую команду: 
    • java -jar selenium-server.jar
  • Напишите сценарий, используя клиентские библиотеки Selenium, и то же самое, используя Selenium Server.

Ограничения Selenium RC:

  • В Selenium Remote control драйвер автоматизации и браузер становятся немного медленнее, потому что движок браузера напрямую не взаимодействует, а Selenium RC внедряет javascript в движок браузера, также называемый Selenium Core.
  • Сервер, который должен быть запущен до и во время выполнения тестового скрипта.
  • Расширенные веб-действия не могут быть автоматизированы и обработаны с помощью Selenium RC, такие как движение мыши, двойной щелчок, ввод с клавиатуры и т. Д., В отличие от Selenium Webdriver.
  • Selenium RC не поддерживает тестирование мобильных приложений.
  • Selenium RC зависит от реального браузера для запуска сценария тестирования автоматизации, и он не поддерживает автономный браузер, такой как HTMLUnitDriver или GHostDriver и т. Д., В отличие от Selenium Webdriver.

Селен веб-драйвер:

Selenium Webdriver — это расширенная версия среди компонентов Selenium, которая очень надежна, а также поддерживает расширенную версию веб-взаимодействия, а также не взаимодействует с браузером через Javascript, в отличие от Selenium RC, а также поддерживает тестирование мобильных приложений. Его очень часто называют частью Selenium 2.0.

WebDriver может обрабатывать динамические элементы, а также поддерживает параллельное выполнение в нескольких разных браузерах.

У нас будет подробное обсуждение в следующих сегментах.

Селеновая сетка: 

Selenium GRID — еще один компонент Selenium, с помощью которого вы можете удаленно выполнять свой сценарий тестирования автоматизации, создавая узлы master-slave. Selenium GRID поддерживает параллельное тестирование в одном браузере, а также в нескольких браузерах. 

У нас будет дальнейшее обсуждение Selenium GRID в следующих разделах.

Веб-драйвер 3.0

Selenium 3.0 — это последняя версия компонентов Selenium, которая представляет собой комбинацию WebDriver 2.0 и эволюции GRID 3.

В следующем сегменте мы собираемся обсудить Подробно об архитектуре Selenium WebDriver, и, в конце концов, он изображает как Selenium работает внутри,.

Подходы к UI-тестированию мобильных приложений и веб-интерфейсов

Существует три основных подхода к тестированию графического интерфейса приложений, а именно:

1. Ручное тестирование

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

2. Тестирование утилитами записи и воспроизведения (англ. capture/playback tools)

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

3. Тестирование на основе моделей

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

  1. Создайте модель системы
  2. Определите входные параметры
  3. Проверьте ожидаемые результаты
  4. Проведите тесты
  5. Проверьте и подтвердите вывод системы по сравнению с ожидаемым результатом

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

Advantages of QTP over Selenium

QTP Selenium
Can test both web and desktop applications Can only test web applications
Comes with a built-in object repository Has no built-in object repository
Automates faster than Selenium because it is a fully featured IDE. Automates at a slower rate because it does not have a native IDE, and only third-party IDE can be used for development.
Data-driven testing is easier to perform because it has built-in global and local data tables. Data-driven testing is more cumbersome since you have to rely on the programming language’s capabilities for setting values for your test data
Can access controls within the browser(such as the Favorites bar, Address bar, Back and Forward buttons, etc.) Cannot access elements outside of the web application under test
Provides professional customer support No official user support is being offered.
Has native capability to export test data into external formats Has no native capability to export runtime data onto external formats
Parameterization Support is built Parameterization can be done via programming but is difficult to implement.
Test Reports are generated automatically No native support to generate test /bug reports.

Though clearly, QTP has more advanced capabilities, Selenium outweighs QTP in three main areas:

  • Cost(because Selenium is completely free)
  • Flexibility(because of a number of programming languages, browsers, and platforms it can support)
  • Parallel testing(something that QTP is capable of but only with use of Quality Center)

Чек-лист для UI-тестирования: что тестировать в первую очередь

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

  • Типы данных. Убедитесь, что для определенных типов данных, таких как валюта и даты, можно вводить только допустимые значения.
  • Ширина поля. Если определенное текстовое поле предназначено для определенного количества символов, укажите в пользовательском интерфейсе, что введенные данные не должны превышать границу по количеству символов. (Например, поле, которое позволяет использовать 50 символов в базе данных приложения, не должно позволять пользователям вводить более 50 символов в интерфейсе).
  • Элементы навигации. Убедитесь, что все кнопки навигации на странице работают и перенаправляют пользователей на нужную страницу или экран.
  • Индикаторы прогресса. Иногда приложению нужно время, чтобы выполнить порученную работу, в таких случаях используйте индикатор прогресса, он поможет понять, что работа все еще выполняется.
  • Подсказки ввода. В выпадающем меню с сотнями элементов при вводе первой буквы должны остаться только те элементы, которые начинаются с этой буквы, так вы убережете пользователей от просмотра длинной портянки значений.
  • Скролл таблиц. Когда данные из таблицы перетекают на следующую страницу, функция прокрутки должна позволять пользователям прокручивать данные, но не трогать все заголовки.
  • Ведение журнала ошибок. Когда в системе возникает фатальная ошибка, убедитесь, что приложение записывает сведения об ошибке в специальный файл журнала для последующего просмотра.
  • Пункты меню и режим. Убедитесь, что приложение отображает только те пункты меню, которые доступны в определенном режиме.
  • Комбинации клавиш. Проверьте комбинации клавиш, правильно ли они работают, независимо от браузера, платформы или устройства.
  • Кнопки подтверждения действий. Убедитесь, что пользовательский интерфейс имеет работающую кнопку подтверждения каждый раз, когда пользователь хочет сохранить или удалить элемент.

Очень важно. Тестируйте также сквозные процессы

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

Облачный Selenium Grid

Параллельное выполнение тестов из локального Selenium Grid имеет серьезные недостатки, если идет речь о масштабируемости и надежности. Не подходит для больших веб-приложений, где много тест-сьютов запускаются на множестве браузеров, ОС и устройств.

Облачное тестирование в Selenium ускоряет процессы, поскольку параллельное выполнение выполняется более надежно, и хорошо масштабируемо. Ниже показан testng.xml; параллельное выполнение идет на уровне теста, то есть каждый <test>-тег выполняется в отдельном потоке.

Как видно выше, два теста выполняются параллельно в облаке.

Облачный Selenium Grid = ускорение тестов:

Пишем первый автоматизированный тест

Предыдущая секция была необходима, чтобы понять «что у нее внутре».
Но в реальной жизни в консоли только отлаживают, а тесты пишут.. Например, на PHPUnit.

Пример такого теста есть в архиве селениума в каталоге selenium-php-client-driver. Например, GoogleTest.php. Но версия из архива на русском google работать не будет, поэтому вот модифицированный вариант:

<?php
// GoogleTest.php
// должны быть установлены PEAR-пакеты
// сам PEAR должен быть в include_path
require_once 'Testing/Selenium.php';
require_once 'PHPUnit/Framework/TestCase.php';

class GoogleTest extends PHPUnit_Framework_TestCase
{
    private $selenium;

    public function setUp()
    {
        $this->selenium = new Testing_Selenium("*iexplore", "http://www.google.ru");
        $this->selenium->start();
    }

    public function tearDown()
    {
        $this->selenium->stop();
    }

    public function testGoogle()
    {
        $this->selenium->open("/");
        $this->selenium->type("q", "hello world");
        $this->selenium->click("btnG");
        $this->selenium->waitForPageToLoad(10000);
        // русский текст в кодировке UTF-8 !
        $this->assertRegExp("/Поиск в Google/", $this->selenium->getTitle());
    }
}

Итак, проверив что Selenium-сервер работает, запускаем тест из директории с файлом GoogleTest.php :

C:\...>phpunit GoogleTest.php
PHPUnit 3.2.21 by Sebastian Bergmann.

.

Time: 7 seconds

OK (1 test)

C:\...>

В классе была всего одна функция, имя которой начинается на , поэтому тест один.

Если что-то не работает, то подробный лог будет в консоли selenium-сервера.

Авторизация — один из самых критичных сервисов сайта. Будем тестировать авторизацию на сервере http://mail.ru.

Селениум будет самостоятельно открывать сайт, заполнять окошки с логином-паролем, самостоятельно заходить на сайт и выходить из него.

Схема теста по шагам:

  1. Зайти на заглавную

  2. Заполнить логин-пароль и кликнуть на Войти

  3. Проверить, что появилась кнопка Выход

  4. Кликнуть на выход, проверить что появилась кнопка Войти

Заметим, что mail.ru редиректит на домен win.mail.ru. Чтобы тестирование работало — нужно сразу зайти на win.mail.ru, аналогично тесту для Google.

Код файла MailTest.php:

<?php
// MailTest.php

require_once 'Testing/Selenium.php';
require_once 'PHPUnit/Framework/TestCase.php';

class MailTest extends PHPUnit_Framework_TestCase
{
    protected $selenium;

    // XPATH-локатор для кнопки "Войти"
    protected $enterLocator = "//input";
    
    // XPATH-локатор для кнопки "Выйти"
    protected $exitLocator = "//input";
    
    /*
     * инициализация теста
    */
    public function setUp()
    {
        // Если браузера нет на пути PATH, нужно указать полный путь
        $opera = "*opera C:\Program Files\Opera 9\opera.exe";        
        
        $ie = "*iexplore";
        
        // в процессе авторизации сервер mail.ru перенаправляет на домен win.mail.ru
        // чтобы тест работал корректно, нужно сразу зайти на win.mail.ru.
        $this->selenium = new Testing_Selenium($ie, "http://win.mail.ru");
        $this->selenium->start();
        
        // таймаут по умолчанию 30 секунд.
        // поставим 600 сек, т.к команда open ждет, пока браузер загрузит картинки
        $this->selenium->setTimeout(600000);
       
    }


    /*
     * тест авторизации 
    */
    public function testMail() {
        
        $this->selenium->open("/");
        
        // команда open выполняется синхронно, ожидая полной загрузки страницы
        
        // если браузер уже залогинен (например, режим "запомнить меня")
        if ($this->selenium->isElementPresent($this->exitLocator)) {
            // выйти
            $this->logout();
        }
        
        $this->login();
        $this->logout();        
    }
    
    /*
    * Выйти из сайта
    */
    public function logout() {
        

        // нажать на кнопку "выход"
        $this->selenium->click($this->exitLocator);
        
        // команда click, как и почти все команды, выполняется асинхронно.
        
        // надо подождать загрузки страницы, ждем 600 сек максимум
        $this->selenium->waitForPageToLoad(600000);

        // проверить, что появилась кнопка "войти"
        $this->assertTrue($this->selenium->isElementPresent($this->enterLocator));        
    }
    
    /*
    * Войти в сайт
    */
    public function login()
    {
        $this->selenium->type("Login", 'selenium_test');
        $this->selenium->type("Password", '123456');
        $this->selenium->click($this->enterLocator);        
        $this->selenium->waitForPageToLoad(10000);
        
        // проверить, что появилась кнопка "выйти"
        $this->assertTrue($this->selenium->isElementPresent($this->exitLocator));
        
    }
    
    /*
     * Завершение теста
    */
    public function tearDown()
    {
        $this->selenium->stop();
    }

}

Автоматизация тестирования сайтов, мобильных и веб- приложений: когда делать и какими инструментами

Команды разработки и тестирования стремятся автоматизировать UI-тесты по нескольким причинам. К наиболее примечательным относятся:

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

Таблица сравнения ручного и автоматического тестирования

Разбираем в каких случаях применять автоматическое тестирование.

Критерий Ручное тестирование Автоматическое тестирование
Скорость Низкая Высокая
Точность Низкая Высокая
Масштабируемость Низкая Высокая
Рентабельность инвестиций в краткосрочное тестирование Высокая Высокая
Рентабельность инвестиций в долгосрочное тестирование Низкая Высокая
Возможность повторного использования теста Низкая Высокая
Покрытие тестов Низкая Высокая
Порог входа Легко освоить Требуется постараться
Прозрачность Скорее низкая Скорее высокая
Адаптивность Высокая Требуется постараться
Лучше всего подходит для: Юзабилити-тестирование;Исследовательское тестирование;Ранние стадии разработки; Тестирование пользовательского интерфейса;Ad-hoc тесты; Сквозное тестирование;Регрессионное тестирование;Тестирование стабильных версий пользовательского интерфейса;

Ребята из SimbirSoft сделали классный обзор инструментов для тестирования и подобрали подходящие инструменты для тестирования.

Инструмент для тестирования iOS- и Android-приложений

Для покрытия тестами основных пользовательских сценариев выбрали Appium по следующим причинам:

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

Appium помог успешно провести тесты для iOS и Android. При этом следует учитывать, что подобные end-to-end тесты с Appium не проводятся на каждом merge request, поскольку это занимает много времени. Подробнее →

Инструмент для тестирования веб-приложений и сайтов

Для тестирования веб-приложений и сайтов ребята применяют WebDriver (в связке с Selenium и протоколом автоматизации DevTools). Однажды они нашли статью с исследованием от Giovanni Rago – автора серии полезных материалов о тестировании – и перевели его статью «Puppeteer vs Selenium vs Playwright: сравнение скорости» (Puppeteer vs Selenium vs Playwright, a speed comparison). В итоге решили опробовать новые инструменты, такие как Puppeteer и Playwright. Подробнее →

Правильные веб-локаторы

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

Применяются следующие веб-локаторы Selenium:

  • XPath
  • CSS Selector
  • Name
  • LinkText
  • Partial LinkText
  • TagName
  • ClassName

Веб-локаторы сочетаются с методом find_element (или find_elements).

Какой локатор самый быстрый?

В терминах скорости, самый быстро работающий — ID; поскольку ID-локатор в WebDriver уникален для каждого элемента страницы. ID-локатор возвращает веб-элемент (WebElement), соответствующий указанному значению (или строке). Если на странице найдено несколько элементов с одинаковым ID, то document.getElementById() возвращает первый найденный из них.

Популярные веб-браузеры оптимизируют работу метода document.getElementById(), что дает некоторое ускорение поиска WebElement в DOM.

Если WebElement не имеет атрибута ID, рекомендуется работать через атрибут NAME. Если нет ни ID, ни NAME-атрибута, придется работать с локатором CSS Selector. CSS Engine почти одинаковый во всех распространенных браузерах, и их скорость оптимизирована для связки CSS Selectors + Selenium. Это значит, что не предвидится особых проблем браузерной совместимости с этим веб-локатором. 

CSS Selector в целом находит элементы быстро, и тесты выполняются за небольшой интервал. CSS Selector лучше подходит для устаревших версий и браузеров (типа Internet Explorer); а также, лучше читается код чисто визуально, по сравнению с XPath.

XPath — самый “тормозной” веб-локатор, с ним случаются проблемы на разных браузерах. Рекомендуется применять XPath только если нет другого варианта.

Итак, выстроим веб-локаторы по желательности применения:

  • ID
  • Name
  • CSS Selector
  • XPath

Серии тестов в комбинациях Браузер+ОС

Например, нужно выполнить три теста для комбинации браузера и ОС; тогда это выглядит следующим образом:

JUnit

Test – 1 setUp() under @Before annotation -> Test-1 -> tearDown() under @After annotation
Test – 2 setUp() under @Before annotation -> Test-2 -> tearDown() under @After annotation
Test – 3 setUp() under @Before annotation -> Test-3 -> tearDown() under @After annotation

TestNG

Test – 1 setUp() under @BeforeMethod annotation -> Test-1 -> tearDown() under @AfterMethod annotation
Test – 2 setUp() under @BeforeMethod annotation -> Test-2 -> tearDown() under @AfterMethod annotation
Test – 3 setUp() under @BeforeMethod annotation -> Test-3 -> tearDown() under @AfterMethod annotation

Экземпляр браузера создается и удаляется после каждого сценария.

Ссылки

  1. «Анонс Selenium 4» . Проверено 26 октября 2021 г. — через Selenium.
  2. «Загрузки» . Селен .
  3. «Проект автоматизации браузера Selenium» . селен.dev . Проверено 1 ноября 2021 г. .
  4. Абдуллаев, ОА; Ибрагимова, Л.В. (2020). «Обзор программного обеспечения для тестирования: программное обеспечение Selenium» . Вінницкий национальный технический университет . УДК 004.457.
  5. есть медиафайлы по теме селена . www.селениум.dev .
  6. есть медиафайлы по теме Селена . НовыйКруг . Проверено 29 июня 2014 г. .
  7. Крилл, Пол (6 апреля 2011 г.). «Набор тестов веб-приложений Selenium с открытым исходным кодом для поддержки iPhone и Android» . ИнфоМир . Архивировано из оригинала 5 мая 2011 года . Проверено 9 мая 2012 г. Selenium был назван так потому, что Хаггинс, недовольный инструментами тестирования на рынке, искал название, которое позиционировало бы продукт как альтернативу коммерческому программному обеспечению для тестирования Mercury Interactive QuickTest Professional. По словам Хаггинса, название «Селен» было выбрано потому, что минеральные добавки селена служат лекарством от отравления ртутью.
  8. , Хаджа (7 июня 2018 г.). «Компоненты инструмента автоматизации Selenium» . dzone.com . DevOps-зона . Проверено 10 июля 2019 г. .
  9. Эванс, Джим. «Пользователи Selenium — Selenium IDE кажется устаревшей и лишенной функций» . group.google.com . Проверено 7 февраля 2016 г.
  10. «Он вернулся! Возрождение Selenium IDE с Дэйвом Хеффнером» . testpodcast.com .
  11. «Selenium IDE мертв, да здравствует Selenium IDE!» . Официальный блог Selenium IDE . 6 августа 2018 г. . Проверено 27 ноября 2019 г. с сайта seleniumhq.wordpress.com.
  12. Колантонио, Джо (27 ноября 2018 г.). «Потрясающее возвращение Selenium IDE» . testguild.com . Проверено 27 ноября 2019 г. .
  13. «Список новых функций Selenium IDE» . applitools.com .
  14. «Firefox 55 и Selenium IDE» . Официальный блог Selenium . 9 августа 2017 г. . Проверено 21 августа 2017 г. .
  15. «Сайт загрузки Selenium IDE» . seleniumhq.org . Проверено 10 мая 2018 г. .
  16. «Selenium IDE возрождается, как феникс из пепла» . Блог о технологиях автоматизации . Проверено 8 апреля 2019 г. .
  17. есть медиафайлы по теме Selenium Remote Control . seleniumhq.org . Проверено 13 ноября 2019 г. .
  18. «Selenium 1 (Selenium RC) :: Документация по Selenium» . www.селениум.dev . Проверено 20 декабря 2020 г. .
  19. sparkdatabox_author. «Selenium | Spark Databox» . Проверено 20 декабря 2020 г. .
  20. «Архитектура приложений с открытым исходным кодом: Selenium WebDriver» . aosabook.org . Проверено 7 февраля 2016 г.
  21. Смит, Майкл. «WebDriver использует рекомендации W3C» . Блог W3C . Проверено 10 сентября 2018 г.
  22. «Загрузки» . селен.dev . Проверено 29 сентября 2021 г. .
  23. «Селеновая сетка» . Проект автоматизации браузера Selenium . Проверено 9 сентября 2020 г. .

С какими различными исключениями вы можете столкнуться в веб-драйвере Selenium?

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

Это основные исключения в Selenium Web Driver;

  • Исключение NoSuchWindowException. WebDriver пытается переключиться на недопустимое (недоступное) окно.
  • NoSuchElementException. Происходит, когда элемент недоступен.
  • NoAlertPresentException. Это исключение возникает, когда вы пытаетесь переключиться на непредставленное оповещение.
  • Исключение тайм-аута. Конкретная команда не завершилась в течение указанного времени.
  • Исключение ElementNotVisibleException.
  • Исключение ElementNotSelectableException. Такое исключение возникает, когда элемент отключен (нельзя выбрать или щелкнуть), несмотря на то, что он доступен в DOM.
  • Исключение SessionNotFoundException. WebDriver в этом случае действует сразу после закрытия браузера.
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Акваплант
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: