Введение в Selenium WebDriverJS используя JavaScript и Node.js

Введение в Selenium WebDriverJS используя JavaScript и Node.js

В этой статье мы рассмотрим Selenium WebDriverJs (Javascript) (https://code.google.com/p/selenium/wiki/WebDriverJs), который довольно часто используется в веб автоматизации. Мы юудем использовать Chrome, который имеет драйвер даже для автоматизации браузеров мобильных устройств.

Эта статья даст общее представление о тестировании с помощью WebDriverJs для начала работы.

Вам будет легко, если у Вас имеются определенные знания языка JavaScript и если Вы знаете, как запускать код с помощью Node.js (http://nodejs.org/). Скачать и установить Node.js довольно просто.

Чтобы разобраться более детально, скачайте проект, который включает несколько примеров использования WebDriverJs, которые Вы можете легко запустить. Также Вам понадобится Chromedriver (https://code.google.com/p/selenium/wiki/ChromeDriver). После скачивания и разархивирования положите его в корень папки с проектом.

Selenium WebDriverJs имеет сервер и клиент. Выполните следующую команду для его установки:

npm install selenium-webdriver

После установки файлов вебдрайвера Вам нужно будет подключить его в код проекта следующим образом (у меня это уже сделано):

Также можно включить его как зависимость в файле package.json.

В конце папка проекта должна выглядеть следующим образом:

webdriverjs-1

Webdriver.js имеет много методов, например, Вы можете заметить следующие getAttribute and getText.

Привожу пример наиболее используемых:

  • get - переход в браузере по URL.
  • findElements - аналог document.querySelectorAll в браузере.
  • executeScript – выполнение строки кода JavaScript на текущей странице.
  • getText – получение контента элемента, включая его дочерние элементы.
  • isDisplayed – поиск всех видимых элементов на странице.

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

Вместо этого  нужно сделать следующие преобразования:

WebDriverJs использует такие конструкции для более удобной работы с асинхронным кодом.

Главное, что нужно понять, что методы WebDriver возвращают метод then, который принимает два аргумента. Первый является callback функцией, которая может принимать значения.

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