Что такое WebDriverIO?
Это следующее поколение тестовой среды WebDriver для Node.JS.
В чем разница между WebDriver и WebDriverIO?
WebDriver: это обычный стандарт, такой как CSS, HTML и т. д.
WebDriverIO: это конкретная реализация тестовой среды NodeJS для использования WebDriver.
В чем преимущество использования WebDriverIO перед селеном?
Основное преимущество WebDriverIO: он упрощает команды за счет комбинирования действий. Итак, WebDriverIO - это фреймворк, который обеспечивает привязку к Selenium, что позволяет нам упростить несколько команд Selenium.
Как он интегрирован с другими сервисами и сторонними библиотеками?
Существует множество способов расширить их функциональные возможности с помощью встроенных сервисов, таких как:
Автономный режим против WDIO Testrunner
По сути, это означает, что wedriverio
зависимость модуля npm (v5) не привязана к какому-то конкретному исполнителю тестов. Вам решать, что лучше для ваших нужд. Но если это возможно, вы предпочтете WDIO Testrunner по нескольким причинам, например, из-за их бесшовной интеграции с webdriverio
реализацией, а также из-за того, что многие вещи решаются за вас (больше не нужно использовать обещание, он синхронизируется с природой, обработчик сеанса, etc).
Конфигурация установки
- Мы предполагаем, что вы уже установили NodeJS, в противном случае вы можете ознакомиться с официальной документацией.
- установка Test runner:
npm i --save-dev @wdio/cli
(начиная с v5, testrunner находится отдельно в другом модуле) - Создайте файл конфигурации:
./node_modules/.bin/wdio config
, который задаст вам несколько вопросов о том, как вы хотите установить свою конкретную конфигурацию. - Затем вам нужно будет установить какой-нибудь драйвер, например
chromedriver
. Для этого, если мы используемbrew
, мы можем легко это сделать, выполнив:brew cask install chromedriver
. - Наконец, убедитесь, что Chrome уже установлен в ваших приложениях google chrome из:
/Applications/Google\ Chrome.app
, если нет, перейдите и установите его здесь.
Давайте приступим к созданию первого теста!
Нам нужно создать папку, соответствующую той, которую мы определили на предыдущих шагах. Например, mkdir -p ./test/specs
.
Затем создайте новый файл vi ./test/specs/basic.js
и откройте его:
const assert = require('assert'); describe('webdriver.io page', () => { it('should have the right title', () => { browser.url('https://webdriver.io'); const title = browser.getTitle(); assert.strictEqual(title, 'WebdriverIO · Next-gen WebDriver test framework for Node.js'); }); });
ПРИМЕЧАНИЕ: если все было правильно настроено, у вас будет доступ к глобальному экземпляру селена с именемbrowser
.
Последний шаг, запустите наш первый тест с зеленым флагом!
Для этого просто запустите свой корневой проект: ./node_modules/.bin/wdio wdio.conf.js
Некоторые архитектурные разработки от команды WebDriverIO
- WebDriverIO v5 был разработан с использованием шаблона Page Object Pattern, который предназначен для скрытия деталей ваших методов доступа и поощрения принципа инкапсуляции. Что это означает, например, подумайте о своем фрагменте HTML-страницы или о всей странице как об объекте. Этот объект знает, как получить доступ и изменить свои данные. В результате у вас есть декларативный способ манипулировать действиями ваших пользователей способом TellDontAsk. Затем команда WebDriverIO поощряет наследование между объектами страницы, чтобы поделиться этими знаниями и реализовать этот шаблон. *
- Также опишите способ построения этого объекта с помощью селекторов с функцией получения вместо методов (
object.name
вместоobject.getName
). Таким образом, эти функции оцениваются при фактическом доступе к свойству, а не при создании объекта. Более подробно вы можете заглянуть на официальную страницу.
* Я лично не согласен с этим, потому что для совместного использования кода существуют более эффективные способы, чем использование наследования: «Наследование предназначено для специализации, а не для совместного использования кода». Я бы предпочел подход «Композиция вместо наследования» (книга GoF 1996), но это уже полная тема :)
Конечно, это не полный курс о WebdriverIO, но это всего лишь введение, чтобы начать знакомство с этим фреймворком.
Пожалуйста, поделитесь своими мыслями об этой короткой статье, я люблю делиться идеями, учиться у других, и я надеюсь, что эта статья может быть полезна для кого-то там!
Также вы можете подписаться на меня в Twitter!