388 lines
26 KiB
Markdown
388 lines
26 KiB
Markdown
# МОДУЛЬ «РАБОТА С БРАУЗЕРОМ»
|
||
|
||
## Основные моменты модуля
|
||
|
||
Модуль «Работа с браузером» позволяет работать на данный момент с двумя
|
||
веб-браузерами – Google Chrome и Mozilla Firefox. Он построен на базе
|
||
Selenium WebDriver и позволяет реализовывать основные методы работы со
|
||
страницей браузера – открыть вкладку, перейти на вкладку, найти элемент на
|
||
странице по её ключу и как-то его обработать.
|
||
|
||
### Интерфейс модуля
|
||
|
||
Окно модуля делится на блок настройки браузера, область создания команды
|
||
для работы с браузером, группу кнопок управления действиями и таблицу,
|
||
содержащую список созданных команд. Область создания команды состоит из
|
||
нескольких полей для заполнения, причем, количество доступных для
|
||
редактирования полей меняется в зависимости от выбранного действия в
|
||
поле «Действие». Группа кнопок состоит из трех кнопок – «Добавить»,
|
||
«Редактировать» и «Удалить».
|
||
|
||
<center><img src="../media/image268.png" /></center>
|
||
|
||
<center>Рис. 1. Окно модуля «Работа с браузером»</center>
|
||
|
||
Создание команды начинается с выбора действия. После его выбора список
|
||
доступных полей в окне может измениться. Необходимо заполнить поля,
|
||
требующиеся для выбранного действия и нажать на кнопку «Добавить».
|
||
Созданное действие отобразится в таблице «Список команд». Для
|
||
редактирования команды следует выбрать её в списке команд, изменить
|
||
необходимые поля и нажать «Редактировать». Если при этом нажать на
|
||
кнопку «Добавить», то будет добавлено новое действие, похожее на то, что
|
||
было выбрано в списке команд, но с внесенными изменениями. Можно ничего
|
||
не менять и нажать на кнопку «Добавить», тогда получится полное
|
||
копирование команды.
|
||
|
||
Для удаления ненужных команд необходимо выбрать команду в таблице и
|
||
нажать «Удалить».
|
||
|
||
Робот будет выполнять все указанные команды последовательно, поэтому для
|
||
изменения порядка команд в таблице можно воспользоваться кнопками в
|
||
правом верхнем углу таблицы. Делается это следующим образом – выбирается
|
||
строка, положение которой необходимо изменить, а затем нажимаются кнопки
|
||
«Поднять» или «Опустить», в зависимости от того, где эта строка должна
|
||
находиться.
|
||
|
||
<center><img src="../media/image269.png" style="width:5.72429in;height:2.28759in" /></center>
|
||
|
||
<center>Рис. 2. Кнопки для изменения порядка команд</center>
|
||
|
||
Для всех действий некоторые поля остаются неизменными, это все поля для
|
||
настройки браузера, «Действие» и «Примечание».
|
||
|
||
### Поля для настройки браузера
|
||
|
||
**Поле «Драйвер»** на данный момент недоступно для редактирования и в
|
||
нем по умолчанию выбран драйвер для браузера 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.
|
||
|
||
## Описание действий
|
||
|
||
Модуль предлагает использование 7 основных действий – перейти на
|
||
страницу, перезагрузить страницу, перейти назад или вперед, работа со
|
||
страницей, работа со вкладками и закрыть браузер. Каждое действие
|
||
требует заполнения определенных полей.
|
||
|
||
***Обратите внимание***, что модуль создает свой экземпляр браузера, без
|
||
авторизованных аккаунтов, если не заполнено поле «Путь до папки с
|
||
профилями пользователя». Созданный браузер закрывается сам в конце
|
||
работы робота. Нельзя закрывать браузер самостоятельно!
|
||
|
||
Описание полей, которые не изменяются в зависимости от действия:
|
||
|
||
**Поле «Действие»** — это выпадающий список с перечнем возможных
|
||
действий этого модуля. Подробнее о них будет рассказываться в следующей
|
||
главе.
|
||
|
||
**Поле «Пауза»** — ожидает указанное количество миллисекунд после выполнения действия.
|
||
|
||
**Поле «Скриншот»** — при установленной галочке делает скриншот после выполнения
|
||
команды и сохраняет его в папку screen, находящуюся в папке с программой.
|
||
|
||
**Поле «Примечание»** — строка с примечанием к команде.
|
||
|
||
### Перечень и описание действий
|
||
|
||
#### Действие «Перейти»
|
||
|
||
С помощью действия «Перейти» происходит переход на заданную страницу. В
|
||
области создания команды откроется поле – «URL». URL необходимо вводить
|
||
с протоколом, т.е. с http/https.
|
||
|
||
<center><img src="../media/image270.png"/></center>
|
||
|
||
<center>Рис. 3. Пример настройки действия «Перейти»</center>
|
||
|
||
Если уже открыта какая-либо страница, то браузер перейдет от неё к
|
||
странице, указанной в поле «URL», то есть исходная страница будет
|
||
заменена новой. Если браузер еще не был запущен, то он будет открыт с
|
||
этой страницы.
|
||
|
||
#### Действие «Перезагрузить страницу»
|
||
|
||
Действие позволяет перезагружать уже открытую страницу. Перед
|
||
использованием данного действия, убедитесь, что в браузере есть открытая
|
||
страница.
|
||
|
||
Действие не имеет никаких дополнительных для настройки полей.
|
||
|
||
#### Действие «Назад»
|
||
|
||
Действие позволяет выполнять переход к странице, которая была открыта в
|
||
браузере до текущей.
|
||
|
||
#### Действие «Вперед»
|
||
|
||
Действие позволяет выполнять переход к странице, которая была открыта в
|
||
браузере после текущей, если таковая была.
|
||
|
||
#### Действие «Работа со страницей»
|
||
|
||
Данное действие предоставляет возможность работать с отдельным элементом
|
||
страницы. Для настройки действия появляются следующие поля: «Тип поиска
|
||
элемента», «Строка поиска», «Действие на странице», «Ожидание» и «Номер
|
||
элемента». Еще два поля – «Свойство» и «Переменная» становятся
|
||
доступными в зависимости от выбора действия на странице.
|
||
|
||
<center><img src="../media/image271.png"/></center>
|
||
|
||
<center>Рис. 4. Поля для настройки действия «Работа со страницей»</center>
|
||
|
||
**Поле «Тип поиска элемента»** представляет собой выпадающий список с
|
||
перечнем методов поиска элемента на странице, используется в паре с
|
||
полем **«Строка поиска»**.
|
||
|
||
***Обратите внимание!*** В поле «Строка поиска» могут быть использованы
|
||
переменные и готовые значения для работы модуля, но нет возможности
|
||
составлять сложные строки кода прямо в этом поле. Для составления кода
|
||
нужно воспользоваться модулем «Вычисления», записать получившийся код в
|
||
переменную и саму переменную затем подать в это поле в модуле.
|
||
|
||
Ниже будут перечислены все типы поиска элемента с примерами заполнения
|
||
поля «Строка поиска»:
|
||
|
||
- GetElementsByName – поиск элементов по их свойству name.
|
||
<center><listing> <div name="element">
|
||
<p>some content</p>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 1. Пример элемента со свойством name</center>
|
||
|
||
«Строка поиска» для нахождения элемента div - element.
|
||
|
||
- GetElementsById – поиск элементов по их свойству id.
|
||
<center><listing> <div id="element">
|
||
<p>some content</p>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 2. Пример элемента со свойством id.</center>
|
||
|
||
> «Строка поиска» для нахождения элемента div - element.
|
||
|
||
- GetElementsByClass – поиск элементов по их свойству class.
|
||
<center><listing> <div class="myClass">
|
||
<p>some content</p>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 3. Пример элемента со свойством class</center>
|
||
|
||
> «Строка поиска» для нахождения элемента div - myClass.
|
||
|
||
- GetElementsByCssSelector – поиск элементов по их CSS селектору.
|
||
<center><listing> <div class="main">
|
||
<p>text</p>
|
||
<p> Another text </p>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 4. Пример элемента div со свойством class</center>
|
||
|
||
> «Строка поиска» для нахождения элемента div - div.main.
|
||
|
||
- GetElementByLinkText – поиск элементов-ссылок по их тексту. Ищутся
|
||
только элементы с полным совпадением.
|
||
<center><listing> <div>
|
||
<a ref=” …”>text</a>
|
||
<a ref=” …”>Another text</a>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 5. Пример элементов – ссылок а</center>
|
||
|
||
> «Строка поиска» нахождения первого элемента a на примере – text.
|
||
|
||
- GetElementsByPartialLinkText - поиск элементов-ссылок по их тексту.
|
||
Ищутся все элементы, содержащие заданную строку.
|
||
<center><listing> <div>
|
||
<a ref=” …”>text</a>
|
||
<a ref=” …”>Another text</a>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 6. Пример элементов – ссылок а</center>
|
||
|
||
> «Строка поиска» нахождения двух элементов a – text
|
||
|
||
- GetElementsByTagName – поиск элементов по их тегу.
|
||
<center><listing> <div>
|
||
<a ref=” …”>text</a>
|
||
<p>Another text</p>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 7. Пример элементов с разными тегами</center>
|
||
|
||
> «Строка поиска» нахождения элемента a – a.
|
||
|
||
- GetElementsByXPath – поиск элементов по языку запросов HTML – xpath.
|
||
<center><listing> <div class="main">
|
||
<p>text</p>
|
||
<p> Another text </p>
|
||
</div> </listing></center>
|
||
|
||
<center>Листинг 8. Пример элементов div со свойством class</center>
|
||
|
||
«Строка поиска» для нахождения элемента div - //div\[@class='main'\].
|
||
|
||
Чтобы получить строку xpath для необходимого вам элемента в консоли
|
||
разработчика в браузере, нужно нажать по этому элементу правой кнопкой
|
||
мыши в коде – копировать – XPath:
|
||
|
||
<center><img src="../media/image272.png" style="width:3.98958in;height:3.34758in" /></center>
|
||
|
||
<center>Рис. 5. Получение строки xpath из консоли браузера</center>
|
||
|
||
**Поле** **«Действие на странице»** предлагает выбор действия из
|
||
выпадающего списка, которое необходимо произвести над найденными
|
||
элементами. Доступны следующие действия:
|
||
|
||
- Записать – вводит заданный в поле «Переменная» текст (например,
|
||
после нажатия на определенный элемент для ввода текста);
|
||
|
||
- Получить text – получает значение свойства «text» всех найденных или
|
||
только выбранного элемента и возвращает результат в виде списка в
|
||
переменную;
|
||
|
||
- Отправить – нажатие клавиши «ВВОД» («ENTER») – применение записанных
|
||
данных (например, в строке поиска можно ввести какой-либо текст
|
||
действием «Записать», а затем «Отправить» его);
|
||
|
||
- Нажать – нажатие левой кнопкой мыши на заданный элемент (обязательно
|
||
заполнение поля «Номер элемента»);
|
||
|
||
- Навести мышь – наведение мыши на конкретно заданный элемент
|
||
(обязательно заполнение поля «Номер элемента»);
|
||
|
||
- Получить Property – при выборе действия появляется поле «Название
|
||
Property» - возвращает значение указанного в поле «Название
|
||
Property» свойства всех найденных элементов или конкретно заданного.
|
||
Результатом будет являться список;
|
||
|
||
- Получить CSS свойство – при выборе действия появляется поле
|
||
«Свойство CSS» - возвращает значение указанного в поле «Свойство
|
||
CSS» свойства всех найденных элементов или конкретно заданного.
|
||
Результатом будет являться список;
|
||
|
||
- Получить Attribute – при выборе действия появляется поле «Свойство
|
||
Attribute» - возвращает значение указанного в поле «Свойство
|
||
Attribute» свойства всех найденных элементов или конкретно
|
||
заданного. Результатом будет являться список;
|
||
|
||
- Получить элементы – возвращает список указанных элементов для
|
||
дальнейшей работы с ними;
|
||
|
||
- Выполнить JavaScript – данное действие позволяет выполнить
|
||
JavaScript код в браузере для получения некоторой информации. Для
|
||
записи результата выполнения кода в переменную, необходимо в начале
|
||
кода добавлять «return», например «return
|
||
document.querySelectorAll("\[height='24'\]").length» (такой запрос
|
||
вернет количество элементов на странице, высота которых равна 24);
|
||
|
||
- Нажать кнопку на клавиатуре – позволяет нажать кнопку на клавиатуре
|
||
внутри браузера.
|
||
|
||
**В поле «Переменная»** вводится название переменной, начиная с символов
|
||
«v.», в которую будет помещен результат выполнения команды или,
|
||
наоборот, из которой будут браться значения для её выполнения.
|
||
|
||
**Поле «Ожидание (сек)»**. В поле вводится количество секунд, которое
|
||
дается программе на поиск элемента на странице.
|
||
|
||
**Поле «Номер элемента»** предназначено для указания индекса найденного
|
||
элемента, к которому необходимо применить действие.
|
||
|
||
Пример заполненного действия:
|
||
|
||
<center><img src="../media/image273.png" /></center>
|
||
|
||
<center>Рис. 6. Пример настройки действия «Работа со страницей»</center>
|
||
|
||
На рисунке 6 представлен пример действия, настроенного для поиска
|
||
элемента, имя которого равно «q». После того как элемент найден, в него
|
||
будет вставлен текст «Lexema-RPA».
|
||
|
||
#### Действие «Работа с вкладками»
|
||
|
||
Данное действие позволяет манипулировать вкладками в окне браузера. Для
|
||
настройки действия открывается как минимум одно поле – «Действие»,
|
||
остальные открываются в зависимости от выбранного в нем действия.
|
||
|
||
<center><img src="../media/image274.png"/></center>
|
||
|
||
<center>Рис. 7. Поля для настройки действия «Работа со вкладками»</center>
|
||
|
||
Доступные действия для работы с вкладками:
|
||
|
||
- Добавить вкладку – создаст новую вкладку, и та станет активной;
|
||
|
||
- Закрыть вкладку – закроет активную вкладку;
|
||
|
||
- Перейти на вкладку – при выборе действия появляется поле «Номер
|
||
вкладки» - переходит на вкладку, номер которой указан в поле «Номер
|
||
вкладки» (начиная с 0);
|
||
|
||
- Получить количество вкладок – при выборе действия появляется поле
|
||
«Переменная» - возвращает в указанную переменную количество вкладок
|
||
в браузере.
|
||
|
||
#### Действие «Закрыть браузер»
|
||
|
||
Закрывает браузер, открытый с помощью модуля, не требует дополнительных
|
||
настроек.
|