МОДУЛЬ «РАБОТА С БРАУЗЕРОМ»

Основные моменты модуля

Модуль «Работа с браузером» позволяет работать на данный момент с двумя веб-браузерами – Google Chrome и Mozilla Firefox. Он построен на базе Selenium WebDriver и позволяет реализовывать основные методы работы со страницей браузера – открыть вкладку, перейти на вкладку, найти элемент на странице по её ключу и как-то его обработать.

Интерфейс модуля

Окно модуля делится на блок настройки браузера, область создания команды для работы с браузером, группу кнопок управления действиями и таблицу, содержащую список созданных команд. Область создания команды состоит из нескольких полей для заполнения, причем, количество доступных для редактирования полей меняется в зависимости от выбранного действия в поле «Действие». Группа кнопок состоит из трех кнопок – «Добавить», «Редактировать» и «Удалить».

Рис. 1. Окно модуля «Работа с браузером»

Создание команды начинается с выбора действия. После его выбора список доступных полей в окне может измениться. Необходимо заполнить поля, требующиеся для выбранного действия и нажать на кнопку «Добавить». Созданное действие отобразится в таблице «Список команд». Для редактирования команды следует выбрать её в списке команд, изменить необходимые поля и нажать «Редактировать». Если при этом нажать на кнопку «Добавить», то будет добавлено новое действие, похожее на то, что было выбрано в списке команд, но с внесенными изменениями. Можно ничего не менять и нажать на кнопку «Добавить», тогда получится полное копирование команды.

Для удаления ненужных команд необходимо выбрать команду в таблице и нажать «Удалить».

Робот будет выполнять все указанные команды последовательно, поэтому для изменения порядка команд в таблице можно воспользоваться кнопками в правом верхнем углу таблицы. Делается это следующим образом – выбирается строка, положение которой необходимо изменить, а затем нажимаются кнопки «Поднять» или «Опустить», в зависимости от того, где эта строка должна находиться.

Рис. 2. Кнопки для изменения порядка команд

Для всех действий некоторые поля остаются неизменными, это все поля для настройки браузера, «Действие» и «Примечание».

Поля для настройки браузера

Поле «Драйвер» на данный момент недоступно для редактирования и в нем по умолчанию выбран драйвер для браузера Chrome, но в обозримом будущем этот список планируется дополнять другими браузерами.

Поля «Proxy Server» - «Proxy Password» предназначены для ввода настроек прокси-сервера, если это необходимо.

Поле «Аргументы» - если необходим запуск браузера с некоторыми аргументами, например, открыть с определенным языком или через режим инкогнито (нужные можно найти на просторах интернета), то эти аргументы должны вводиться в это поле.

Поле «Агент» предназначено для продвинутых пользователей – оно отвечает за User Agent (идентификационная строка клиентского приложения, использующая определённый сетевой протокол), под которых будет запущен браузер. Если поле пустое, то агент будет считываться из конфига программы, где указано его значение по умолчанию.

Поле «Путь до папки с профилями пользователя» - для того, чтобы запустить не новый экземпляр браузера, а с авторизованным профилем (с сохранением истории браузера, авторизацией на сайтах и другое) необходимо указать путь до папки с этим профилем. Если указанного пути не существует, то будет создана новая папка с профилем, в которую будет сохраняться текущая деятельность в браузере. Папки с профилями пользователя в Google Chrome лежат в директории «C:\Users\ИмяПользователя\AppData\Local\Google\Chrome», где вместо ИмяПользователя должен стоять ваш пользователь Windows. В поле необходимо указывать путь до одной из тех папок, что лежат в вышеуказанной директории (например, «C:\Users\ИмяПользователя\AppData\Local\Google\Chrome\User Data»).

Поле «Путь до браузера» необходимо в случаях особого использования браузера (другой экземпляр, нестандартный Chrome) или браузеров на основе chromium (например, chromium-gost). Если данное поле не заполнено, то берется адрес Google Chrome из реестра Windows. Если по каким-то причинам получить значение не удалось, берется значение из конфига Lexema RPA Studio.

Драйвера для работы с браузерами

При работе с Google Chrome модуль работает на драйвере chromedriver, который требует обновления при каждом повышении версии браузера, с которым работает. При запуске модуля, если драйвер устарел, программа выдаст одну из ошибок:

  • «Версия chromedriver отличалась от версии браузера. Было выполнено обновление, запустите скрипт еще раз» - программе удалось самостоятельно обновить драйвер, в этом случае необходимо запустить робота еще раз;

  • «Версия драйвера не соответствует версии браузера. Обновите chromedriver в папке с программой, скачав его по ссылке - https://chromedriver.storage.googleapis.com/{номер версии}/chromedriver_win32.zip» - программе не удалось самостоятельно обновить драйвер, но удалось определить необходимую для вашего браузера версию, необходимо следовать инструкции в описании ошибки;

  • «Версия драйвера не соответствует версии браузера. Обновите chromedriver в папке с программой, скачав его по ссылке - https://chromedriver.chromium.org/» - программе не удалось самостоятельно обновить драйвер, необходимо самостоятельно определить версию вашего браузера и найти на указанной сылке соответствующую версию драйвера, затем скачать chromedriver_win32.zip и распаковать в папку с Lexema-RPA Studio.

При работе с Mozilla Firefox модуль работает на драйвере geckodriver, который так же зависит от версии используемого драйвера. Данный драйвер необходимо обновлять самостоятельно, для этого нужно перейти по ссылке https://github.com/mozilla/geckodriver/releases, найти интересующую версию, найти в ней раздел Assets, скачать geckodriver-номер_версии-win32.zip и распаковать в папку с Lexema-RPA Studio.

Описание действий

Модуль предлагает использование 8 основных действий – перейти на страницу, перезагрузить страницу, получить адрес страницы, перейти назад или вперед, работа со страницей, работа со вкладками и закрыть браузер. Каждое действие требует заполнения определенных полей.

Обратите внимание, что модуль создает свой экземпляр браузера, без авторизованных аккаунтов, если не заполнено поле «Путь до папки с профилями пользователя». Созданный браузер закрывается сам в конце работы робота. Нельзя закрывать браузер самостоятельно!

Описание полей, которые не изменяются в зависимости от действия:

Поле «Действие» — это выпадающий список с перечнем возможных действий этого модуля. Подробнее о них будет рассказываться в следующей главе.

Поле «Пауза» — ожидает указанное количество миллисекунд после выполнения действия.

Поле «Скриншот» — при установленной галочке делает скриншот после выполнения команды и сохраняет его в папку screen, находящуюся в папке с программой. Название изображения – описание действия + «.bmp».

Поле «Примечание» — строка с примечанием к команде.

Перечень и описание действий

Действие «Перейти»

С помощью действия «Перейти» происходит переход на заданную страницу. В области создания команды откроется поле – «URL». URL необходимо вводить с протоколом, т.е. с http/https.

Рис. 3. Пример настройки действия «Перейти»

Если уже открыта какая-либо страница, то браузер перейдет от неё к странице, указанной в поле «URL», то есть исходная страница будет заменена новой. Если браузер еще не был запущен, то он будет открыт с этой страницы.

Действие «Перезагрузить страницу»

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

Действие не имеет никаких дополнительных для настройки полей.

Действие «Получить адрес страницы»

Действие получает адрес текущей открытой страницы и записывает результат в указанную переменную.

Действие «Назад»

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

Действие «Вперед»

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

Действие «Работа со страницей»

Данное действие предоставляет возможность работать с отдельным элементом страницы. Для настройки действия появляются следующие поля: «Тип поиска элемента», «Строка поиска», «Действие на странице», «Ожидание» и «Номер элемента». Еще два поля – «Свойство» и «Переменная» становятся доступными в зависимости от выбора действия на странице.

Рис. 4. Поля для настройки действия «Работа со страницей»

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

Обратите внимание! В поле «Строка поиска» могут быть использованы переменные и готовые значения для работы модуля, но нет возможности составлять сложные строки кода прямо в этом поле. Для составления кода нужно воспользоваться модулем «Вычисления», записать получившийся код в переменную и саму переменную затем подать в это поле в модуле.

Ниже будут перечислены все типы поиска элемента с примерами заполнения поля «Строка поиска»:

  • GetElementsByName – поиск элементов по их свойству name.
    <div name="element"> <p>some content</p> </div>

Листинг 1. Пример элемента со свойством name

«Строка поиска» для нахождения элемента div - element.

  • GetElementsById – поиск элементов по их свойству id.
    <div id="element"> <p>some content</p> </div>

Листинг 2. Пример элемента со свойством id.

«Строка поиска» для нахождения элемента div - element.

  • GetElementsByClass – поиск элементов по их свойству class.
    <div class="myClass"> <p>some content</p> </div>

Листинг 3. Пример элемента со свойством class

«Строка поиска» для нахождения элемента div - myClass.

  • GetElementsByCssSelector – поиск элементов по их CSS селектору.
    <div class="main"> <p>text</p> <p> Another text </p> </div>

Листинг 4. Пример элемента div со свойством class

«Строка поиска» для нахождения элемента div - div.main.

  • GetElementByLinkText – поиск элементов-ссылок по их тексту. Ищутся только элементы с полным совпадением.
    <div> <a ref=” …”>text</a> <a ref=” …”>Another text</a> </div>

Листинг 5. Пример элементов – ссылок а

«Строка поиска» нахождения первого элемента a на примере – text.

  • GetElementsByPartialLinkText - поиск элементов-ссылок по их тексту. Ищутся все элементы, содержащие заданную строку.
    <div> <a ref=” …”>text</a> <a ref=” …”>Another text</a> </div>

Листинг 6. Пример элементов – ссылок а

«Строка поиска» нахождения двух элементов a – text

  • GetElementsByTagName – поиск элементов по их тегу.
    <div> <a ref=” …”>text</a> <p>Another text</p> </div>

Листинг 7. Пример элементов с разными тегами

«Строка поиска» нахождения элемента a – a.

  • GetElementsByXPath – поиск элементов по языку запросов HTML – xpath.
    <div class="main"> <p>text</p> <p> Another text </p> </div>

Листинг 8. Пример элементов div со свойством class

«Строка поиска» для нахождения элемента div - //div[@class='main'].

Чтобы получить строку xpath для необходимого вам элемента в консоли разработчика в браузере, нужно нажать по этому элементу правой кнопкой мыши в коде – копировать – XPath:

Рис. 5. Получение строки xpath из консоли браузера

Так же с помощью XPath можно писать свои запросы для поиска элемента на странице по некоторым полям, их части или другим свойствам элемента. В интернете много ресурсов по описанию языка XPath, как пример, один из них: https://msiter.ru/tutorials/xpath/syntax.

Поле «Действие на странице» предлагает выбор действия из выпадающего списка, которое необходимо произвести над найденными элементами. Доступны следующие действия:

  • Записать – вводит заданный в поле «Переменная» текст (например, после нажатия на определенный элемент для ввода текста);

  • Получить text – получает значение свойства «text» всех найденных или только выбранного элемента и возвращает результат в виде списка в переменную;

  • Отправить – нажатие клавиши «ВВОД» («ENTER») – применение записанных данных (например, в строке поиска можно ввести какой-либо текст действием «Записать», а затем «Отправить» его);

  • Нажать – нажатие левой кнопкой мыши на заданный элемент (обязательно заполнение поля «Номер элемента»);

  • Навести мышь – наведение мыши на конкретно заданный элемент (обязательно заполнение поля «Номер элемента»);

  • Получить Property – при выборе действия появляется поле «Название Property» - возвращает значение указанного в поле «Название Property» свойства всех найденных элементов или конкретно заданного. Результатом будет являться список;

  • Получить CSS свойство – при выборе действия появляется поле «Свойство CSS» - возвращает значение указанного в поле «Свойство CSS» свойства всех найденных элементов или конкретно заданного. Результатом будет являться список;

  • Получить Attribute – при выборе действия появляется поле «Свойство Attribute» - возвращает значение указанного в поле «Свойство Attribute» свойства всех найденных элементов или конкретно заданного. Результатом будет являться список;

  • Получить элементы – возвращает список указанных элементов для дальнейшей работы с ними;

  • Выполнить JavaScript – данное действие позволяет выполнить JavaScript код в браузере для получения некоторой информации. Для записи результата выполнения кода в переменную, необходимо в начале кода добавлять «return», например «return document.querySelectorAll("[height='24']").length» (такой запрос вернет количество элементов на странице, высота которых равна 24);

  • Получить скриншот – делается скриншот текущего экрана и сохраняет его по пути, указанном в поле «Переменная». Путь должен быть указан полностью – с названием и расширением сохраняемого изображения;

  • Нажать кнопку на клавиатуре – позволяет нажать кнопку на клавиатуре внутри браузера. Кнопки нажимаются по отношению к заданному элементу, а не просто к странице браузера;

  • Нажать несколько кнопок на клавиатуре – позволяет нажать сочетания кнопок на клавиатуре внутри браузера. Кнопки нажимаются по отношению к заданному элементу, а не просто к странице браузера. Для заполнения данного действия необходимо в поле «Клавиши» нажать на стрелочку в углу, вследствие чего откроется окно, в котором необходимо в табличную часть добавить последовательно те кнопки, которые участвуют в необходимом сочетании. Само поле «Клавиши» недоступно для редактирования.

Рис. 6. Кнопка для перехода в окно выбора клавиш для сочетания

Рис. 7. Окно выбора клавиш для сочетания

Рис. 8. Результат выбора клавиш в поле «Клавиши»

В поле «Переменная» вводится название переменной, начиная с символов «v.», в которую будет помещен результат выполнения команды или, наоборот, из которой будут браться значения для её выполнения.

Поле «Ожидание (сек)». В поле вводится количество секунд, которое дается программе на поиск элемента на странице.

Поле «Номер элемента» предназначено для указания индекса найденного элемента, к которому необходимо применить действие.

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

Рис. 9. Пример настройки действия «Работа со страницей»

На рисунке 9 представлен пример действия, настроенного для поиска элемента, имя которого равно «q». После того как элемент найден, в него будет вставлен текст «Lexema-RPA».

Действие «Работа с вкладками»

Данное действие позволяет манипулировать вкладками в окне браузера. Для настройки действия открывается как минимум одно поле – «Действие», остальные открываются в зависимости от выбранного в нем действия.

Рис. 10. Поля для настройки действия «Работа со вкладками»

Доступные действия для работы с вкладками:

  • Добавить вкладку – создаст новую вкладку, и та станет активной;

  • Закрыть вкладку – закроет активную вкладку;

  • Перейти на вкладку – при выборе действия появляется поле «Номер вкладки» - переходит на вкладку, номер которой указан в поле «Номер вкладки» (начиная с 0);

  • Получить количество вкладок – при выборе действия появляется поле «Переменная» - возвращает в указанную переменную количество вкладок в браузере.

Действие «Закрыть браузер»

Закрывает браузер, открытый с помощью модуля, не требует дополнительных настроек.