Найти тему
Ruby-разработчик

Как управлять браузером с помощью Руби и гема Watir

Оглавление

Это перевод оригинальной статьи от Jesus Castello.

Знали ли вы, что вы можете управлять вашим браузером с помощью Ruby?

Гем Watir даёт вам такую возможность.

Watir.com
Watir.com

И вы можете распоряжаться всеми возможностями современных браузеров:

  • вы можете делать скриншоты видимой области страницы
  • вы можете запускать JS-код на любой странице без необходимости вручную открывать «Инструменты разработчика» и ввода кода там
  • вы можете искать ссылки, кликать по ними даже заполнять поля ввода

Всё это возможно благодаря Watir и проекту Selenium.

Давайте уже посмотрим на какой-нибудь код!

Запуск браузера

Сначала надо создать объект браузера, как здесь:

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

Примечание переводчика:

Автор забыл рассказать, что для гема Watir требуется установленный драйвер Selenium. Сделать это можно следуя инструкциям на официальной странице проекта: http://watir.com/guides/drivers/. Если не вдаваться в детали, то нужно скачать драйвер для нужного вам браузера нужной версии и установить его. Скачать драйвер для браузера Chrome можно здесь. Позже будет отдельная статья по этой теме.

Например:

Chrome перейдёт на этот URL, страница будет загружена, как будто вы ввели этот URL сами.

Теперь:

Вы можете делать всё, что вы бы обычно делали на странице с помощью мыши и клавиатуры.

Например, искали бы ссылки и кликали по ним.

Вот так:

Как искать элементы веб-страницы с помощью Watir?

Вы можете искать элементы по их атрибутам, таким как:

  • текст
  • class
  • id

Для элементов веб-страниц существуют методы, которые соответствуют их HTML-названиям. Так что, для тега H1, метод называется h1, для параграфа есть метод p, а для изображений методы img и images.

Пример:

Вы можете получать и списки элементов, используя множественное число в названии метода.

Вот примеры:

Такие методы вернут вам объект класса Watir::AnchorCollection, который отвечает таким методам, как each, map и inject.

Пример:

Как взаимодействовать с таймаутами и отсутствующими элементами?

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

Что происходит, когда Watir не может найти элемент?

Произойдёт таймаут.

По умолчанию, это 30 секунд, но вы можете изменить его:

Когда это происходит, вы получаете исключение Watir::Exception::UnknownObjectException.

Но есть другой способ справиться с этим!

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

Вот как:

Как сделать скриншот?

Вы можете сделать скриншот сразу после того, как открыли браузер и страница была загружена.

Таким образом:

Этот код сделает скриншот видимой части страницы и сохранит его.

Запуск JS-скриптов

Вы можете запуска JavaScript прямо в браузере, чтобы изменить текущее состояние страницы, или чтобы вызвать JS-функции определённые на этой странице.

Вот так:

А как же результат?

Окно предупреждения со словом «bacon» 🙂

Можно выполнить код и получить результат выполнения:

Как заполнять формы?

Заполнение форм сводится к двум шагам:

  1. Найдите элемент формы
  2. Отправьте ему содержимое

Вот пример:

Теперь нужно найти кнопку подтверждения и кликнуть её.

Полезные методы Watir и советы

Watir предоставляет ещё несколько полезных методов.

Например, для получения текущего URL:

Получение списка открытых вкладок:

Развернуть текущее окно на весь экран:

Получить HTML и текст текущей страницы:

И вот совет: если вам нужно найти текст, имеющий определённые слова или символы, вы можете использовать регулярные выражения.

Как здесь:

Заключение

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

Спасибо, что прочитали до конца!

Источник.

#Ruby #watir #руби #браузер