Что такое 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!