Мониторинг пользовательского опыта (WUX)
Введение в WUX с Pandora FMS
WEB-мониторинг пользовательского опыта (User Experience Monitoring, UX Monitoring или просто WUX в терминологии Pandora FMS) - это процесс сбора, анализа и оценки данных о том, как пользователи взаимодействуют с веб-сайтом или веб-приложением в режиме реального времени. Его цель - выявить проблемы производительности, юзабилити и доступности, чтобы улучшить пользовательский опыт.
Pandora FMS WUX осуществляет синтетический мониторинг (Synthetic Monitoring) с помощью специализированного backend для этих целей (Selenium®). Это означает, что Pandora FMS использует реальный браузер для взаимодействия с удаленными веб-сайтами (Google Chrome®, Mozilla Firefox® и т. д.).
- Позволяет обнаружить проблемы до того, как с ними столкнутся реальные пользователи. Сбор данных о просмотре сайтов реальными пользователями в режиме реального времени (webscrapping).
- Он измеряет такие показатели, как время загрузки, взаимодействие, ошибки и поведение пользователей (веб-аналитика).
- Примеры: Измерение загрузки страницы, времени отклика, скриншотов (веб-страниц), тестирование на различных устройствах, тестирование сложных приложений, требующих регистрации, взаимодействия JavaScript®, inputs текста, передачи данных из одного поля в другое, как будто это делает пользователь, щелчков мыши, таймаутов и т.д.
В чем разница между WUX и другим WEB-мониторингом, который Pandora FMS осуществляет с помощью WEB-сервера?
WEB-сервер использует базовые HTTP-запросы, и хотя он может имитировать сессии, это не настоящий браузер, поэтому он не может запускать JavaScript или эмулировать современный браузер. Обычные WEB-тесты подходят для простых WEB-тестов, WUX гораздо мощнее.
Какие различные версии WUX есть и Pandora FMS?
- WUX на основе агентов (Selenium версии 2), до версии 740.
- WUX централизованно на сервере WUX Server (Selenium 3), до версии 780.
- WUX централизован как плагин Discovery PFMS (Selenium 4), начиная с версии 780.
В версиях, предшествующих 780, WUX запускался как часть сервера Pandora FMS (WUX Server). Хотя это все еще возможно, настройка более сложна, чем использование WUX в централизованном режиме с Discovery PFMS.
WUX, централизованный в Discovery PFMS, также основан на Selenium 4 и может быть использован (опционально) из агента как plugin. Транзакционные файлы (.side) которые работали на сервере WUX, будут работать и в WUX Discovery PFMS.
Информацию о том, как использовать WUX Server (Selenium 3), можно найти в приложении WUX Monitoring.
Архитектура WUX / Discovery
Работа этого плагина для Selenium 4 осуществляется благодаря серверу Pandora FMS Discovery. Как уже упоминалось выше, ранее использовался исключительно выделенный сервер, известный как WUX Server, и теперь для него также можно использовать Discovery PFMS.
Теперь он может выполнять операции с помощью Selenium 4, отсюда и его название, а также совместим с операциями Selenium 3 (которые ранее могли выполняться в среде с WUX-сервером).
Что касается выполнения транзакций, то there is 4 different methods of connecting to Selenium, которые будут более подробно рассмотрены ниже, а также требования, которые должны быть выполнены для обеспечения корректной работы.
Пререквизиты
Главное требование - сервер, с которого выполняется плагин, должен иметь возможность подключаться к стеку Selenium 4, а тот, в свою очередь, должен иметь возможность взаимодействовать с URL-адресами сайтов, подлежащих мониторингу.
Этот плагин WUX имеет четыре различных метода подключения Selenium, которые должны выполняться в каждой транзакции, поэтому вам придется настроить требования на нужный режим выполнения для каждого случая.
Driver local
Плагин plugin будет использовать drivers для Google Chrome или Mozilla Firefox на компьютере, где он запущен. По умолчанию эти компоненты будут искаться по следующим путям, хотя при необходимости можно указать и другие пути.
Бинарные Google Chrome:
/usr/share/pandora_server/util/selenium_headless_drivers/chrome/google-chrome
Chromedriver:
/usr/share/pandora_server/util/selenium_headless_drivers/chromedriver
Бинарные Mozilla Firefox:
/usr/share/pandora_server/util/selenium_headless_drivers/firefox/firefox
Geckodriver:
/usr/share/pandora_server/util/selenium_headless_drivers/geckodriver
Эти драйверы можно загрузить из Pandora FMS library в виде пакета и разархивировать по пути по умолчанию.
Для того чтобы браузеры запускались в этом режиме, в системе также должны быть установлены их специфические зависимости.
- Mozilla Firefox:
gtk3,alsa-lib,libX11-xcb. - Google Chrome:
nss,libdrm,mesa-libgbm.
Driver remote
Плагин plugin будет подключаться к серверу Selenium 4, указанному в его URL, поэтому необходимо иметь доступ с сервера, на котором запущен plugin, к серверу Selenium 4 через его порт прослушивания (по умолчанию 4444 TCP).
Docker local
Плагин plugin запустит Docker-контейнер на сервере, где он будет запущен, используя образ, содержащий drivers, указанный для режима driver local, что позволяет абстрагироваться от зависимостей на реальной машине.
По умолчанию будет использоваться образ pandorafms/pandora_selenium_headless (хотя для каждого выполнения можно указать свой образ), а поиск drivers внутри Docker будет осуществляться по следующим путям:
- Бинарные Google Chrome:
/tmp/lib/chrome/google-chrome. - Chromedriver:
/tmp/lib/chromedriver. - Бинарные Mozilla Firefox:
/tmp/lib/firefox/firefox. - Geckodriver:
/tmp/lib/geckodriver.
Docker remote
Плагин plugin подключится по SSH с именем пользователя и паролем к удаленному серверу, на котором будет запущена копия самого plugin (скопированная на тот момент) в режиме docker local. Поэтому, в дополнение к требованиям предыдущего режима, необходимо также разрешить подключение к удаленному серверу по SSH с указанными учетными данными на указанном порту (по умолчанию 22 TCP).
Пользователь, указанный для SSH-соединения, должен обладать достаточными правами для запуска Docker-контейнера и доступа к файлам, скопированным во временный каталог. Для копирования файлов на удаленный сервер будет использоваться временный каталог (по умолчанию /tmp), хотя для каждого запуска может быть указан свой путь.
Необязательные требования
Для всех режимов исполнения должна быть предусмотрена возможность, по желанию, использовать профили Google Chrome или Mozilla Firefox для каждой транзакции. В случае использования этой возможности должно быть обеспечено, что сервер, на котором инициируется транзакция (либо local, либо remote), содержит пути к этим профилям.
В режимах запуска Docker (local, remote) пути к папкам профиля должны быть указаны на хост-сервере, поскольку плагин будет монтировать эти папки как тома запускаемого контейнера.
Также можно будет отслеживать статистику соединений с основным URL SIDE, указанным в каждом выполнении. Для этого необходимо, чтобы на компьютере, где запускается плагин, был установлен исполняемый файл curl.
Обратите внимание, что если выполнение test происходит в режиме remote driver, то статистика будет получена не с сервера Selenium 4, а с сервера, на котором запущен plugin.
Использование WUX с системой Discovery PFMS
Плагин Instalar Discovery PFMS
Чтобы иметь возможность использовать мониторинг WUX с Selenium 4, необходимо предварительно установить .disk в разделе Discovery веб-консоли Pandora FMS. Это можно сделать в окне Manage disco packages, выбрав файл типа .disk для загрузки из библиотеки Pandora FMS для данного плагина:
Запись транзакций с помощью Selenium IDE
Чтобы иметь возможность выполнять эти операции, они должны быть предварительно сохранены с помощью расширения Selenium IDE, доступного для браузеров Google Chrome или Mozilla Firefox. После открытия расширения вам будет предложено выбрать, хотите ли вы сохранить в новом проекте, открыть существующий проект, создать новый проект или просто закрыть расширение.
Если вы выберете первый вариант, вам будет предложено дать название создаваемому проекту, а затем указать базовый URL-адрес для записи.
Если вы выберете третий вариант, вам будет предложено ввести только название проекта, поэтому, если у вас нет предыдущих записей, вам также придется ввести URL-адрес базы вручную, чтобы начать запись.
После того как расширение будет готово к работе, нужно нажать на кнопку REC, расположенную в правом верхнем углу экрана. В выбранном браузере откроется новое окно, в котором будет загружена страница, указанная в разделе URL базы. С этого момента все действия, выполняемые в этом окне, будут сохраняться в проекте расширения Selenium IDE.
После того как все действия, которые будут отслеживаться в дальнейшем при выполнении транзакции, будут выполнены, нажмите на кнопку Stop recording (там, где раньше находилась кнопка REC ), чтобы остановить запись. Вам будет предложено ввести имя для теста транзакции. Проект в записи состоит из одного или нескольких тестов, которые будут последовательно выполняться в дальнейшем, если их несколько, при последующей загрузке в Pandora FMS. Для каждого теста в проекте будет создан новый агент.
После этого появится вид, аналогичный приведенному ниже:
При желании можно вручную добавить дополнительные команды, например, разделители фаз, комментарии или команды ожидания (wait).
Полный список поддерживаемых команд можно найти в разделе Команды для файлов SIDE.
Чтобы добавить их к текущей записи, щелкните правой кнопкой мыши на любой из существующих команд и выберите опцию Insert new command:
В результате над щелкнутой командой появится пустая командная строка, которую можно отредактировать, чтобы добавить команду вручную. Просто введите нужную команду в поле Command:
Например, чтобы добавить команду запуска фазы, нужно использовать:
//phase_start:имя_фазы
По сравнению с предыдущими версиями, теперь не нужно указывать конец фазы, чтобы закрыть ее, это будет определяться автоматически при появлении новой команды phase_start или, в противном случае, при завершении транзакции.
После завершения записи и настройки дополнительных команд, которые вы хотите использовать, можно сгенерировать файл .side, содержимое которого будет использоваться в конфигурации выполнения plugin. Для этого щелкните на значке дискеты в правом верхнем углу окна Selenium IDE, назовите файл по пути, который легко найти, и сохраните его.
После того как файл .side был создан, открыв его, вы увидите, что на самом деле это JSON-файл. Это содержимое JSON нужно скопировать и вставить в поле Selenium IDE JSON на шаге Test setup конфигурации plugin, смотреть ниже.
Выполнение транзакций из Discovery
Чтобы иметь возможность выполнять записи из инструмента Discovery в веб-консоли Pandora FMS, необходимо создать задачу с помощью Selenium 4 из меню Applications (меню Management → Discovery → Applications):
Задаче должно быть присвоено имя и назначена группа. Можно добавить описание и изменить другие важные параметры, такие как время интервала или тип выполнения:
На следующем шаге появятся следующие параметры:
Они позволят вам выбрать один из четырех доступных режимов выполнения, упомянутых выше, а также указать, в каком веб-браузере будет выполняться транзакция. В целях совместимости рекомендуется использовать тот же браузер, в котором транзакция была сохранена в Selenium IDE.
После указания типа исполнения, в зависимости от того, какой из вариантов был выбран, появятся различные опции конфигурации.
Docker Local
По умолчанию указывается изображение, которое будет использоваться, поэтому не заполняйте ничего, если не хотите использовать другое изображение. Если при выполнении транзакции необходимо использовать профиль конкретного пользователя, необходимо указать его. Также может быть указан путь к используемым профилям браузера.
Docker Remote
Необходимо указать данные, необходимые для подключения по SSH к удаленному серверу, на котором будет выполняться задание. Для данных о подключении необходимы поля IP-адрес или FQDN, порт SSH и учетные данные доступа.
Временный путь будет содержать файлы, необходимые для выполнения, а остальные поля такие же, как и при выполнении Docker Local.
Driver Local
В этом типе выполнения вы можете указать путь к драйверам, необходимым для выполнения и загружаемым из Pandora FMS library.
Что касается tokens, которые можно найти в самом низу:
- Virtual display: Используется при выполнении для использования виртуального рабочего стола. Если не указано, то сервер, на котором выполняется задание, должен иметь подключенный физический рабочий стол (монитор).
- Headless driver: Для браузера, используемого для работы в этом режиме, который подходит для недесктопных сред.
Рекомендуется оставить оба tokens отмеченными.
Driver Remote
В четвертом доступном режиме необходимо указать URL подключения к удаленному driver. Работа с параметрами пользователя и профиля аналогична упомянутому выше.
После выбора режима подключения необходимо настроить последний шаг перед завершением конфигурации задачи.
Можно указать прием незащищенных сертификатов и мониторинг статистики времени. Существуют и другие параметры конфигурации, такие как разрешение экрана, при котором будет выполняться транзакция, глобальное время timeout/ и время ожидания между командами записи.
Наконец, как указано в шаге учёт операций, содержимое JSON формата .side должно быть введено в последнее поле под названием Selenium IDE JSON.
После настройки задачи она либо запустится автоматически через несколько секунд, либо ее нужно будет заставить запуститься вручную, в зависимости от того, как задача была настроена на первом шаге.
По завершении выполнения вы можете просмотреть сводку, в которой будет указано, какие агенты были созданы из задания, какие из них принадлежат к tests агентам и сколько агентов каждого типа.
Результаты выполнения задания Discovery PFMS
В примере проект Selenium назван Selenium 4 и имеет два разных теста, названных Test 1 и Test 2. Если при настройке задачи отмечена опция Monitor time statistics, будет создан агент с именем проекта, в котором будут храниться данные о производительности.
С другой стороны, агенты записанных транзакций также будут созданы, по одному для каждого test. В этом случае будет два агента с именами Test 1 и Test 2:
Результаты мониторинга
После выполнения будут созданы агенты с данными транзакции, содержащие модули выполнения транзакции. Агент с данными о производительности также должен содержать модули для получения такой информации, а опция Monitor time statistics должна быть предварительно включена на последнем шаге конфигурации задачи.
В число модулей, которые необходимо добавить к агентам tests, входят как минимум три следующих:
- Global status: Указывает, было ли test успешно завершено или в какой-то момент потерпело неудачу.
- Global time: Это модуль числового типа, который указывает количество секунд, затраченных на выполнение test.
- Last error screenshot: Если test завершился неудачей, в этом модуле сохраняется скриншот того, что появилось в браузере в момент сбоя.
В описании модулей Global status и Last error screenshot указывается текст ошибки, возвращаемой движком Selenium.
Если в транзакции были настроены фазы, то в дополнение к вышеперечисленным создаются модули, указывающие статус и время каждой фазы. Важно знать, что Global time не обязательно должно быть суммой временных модулей каждой фазы, поскольку Global time также включает время, затрачиваемое браузером на открытие и закрытие, и это лишь несколько примеров.
Что касается данных о производительности, то они показывают время в миллисекундах, которое потребовалось для выполнения каждой из операций, чтобы добраться до сайта. В данном случае это:
- URL stat DNS: Время разрешения DNS для URL-адреса.
- URL stat TSSL: Время установления SSL-соединения.
- URL stat TST: Время получения первого байта.
- URL stat TT: Общее время транзакции для доступа к URL-адресу.
- URL stat TTC: Время TCP-соединения.
- URL stat TTCP: Время, пока соединение не будет готово к передаче данных.
- URL status: Контролирует, может ли быть установлено соединение с URL-адресом.
В этих модулях, как и в любых других, вы можете создавать оповещения, сообщает и другие действия в остальных частях меню Pandora FMS.
В агенте также есть вид, предназначенный только для данных WUX. Его можно найти во вкладках в правом верхнем углу:
В дополнение к widgets для приборных панелей, которые содержат конкретные ссылки на модули WUX:
Запись, показанная выше, является простой записью. Если запись была настроена на разделение на различные фазы, они также будут различаться в представлении данных WUX:
И то же самое с widgets:
Наконец, можно также выполнять веб-скреппинг (webscrapping), который будет описан позже.
Ручное выполнение (от агента, в качестве плагина)
Для ручного выполнения в самом сервере Pandora FMS можно настроить Software agent, который содержит plugin из Selenium 4 для выполнения этих операций и генерирует XML-файлы для каждого из них, чтобы получить различные агенты, и каждый из них со своими соответствующими модулями. Для этого Selenium 4 plugin можно настроить как агент plugin, используя абсолютные пути, чтобы можно было указать путь к файлу plugin и необходимым конфигурационным файлам.
Шаблон, который можно использовать для настройки агента плагина с помощью Selenium 4, выглядит следующим образом:
module_plugin /var/spool/pandora/data_in/discovery/pandorafms.selenium.4/bin/pandora_selenium -c /путь/к/файлу/конфигурации -s /Улица/с/фишером/side -t имя_задачи -i агентский_интервал -g ID_группа -x
Важно отметить, что файл конфигурации задачи и файл .SIDE, загруженный на машину, должны быть предварительно настроены вручную.
Чтобы подготовить файл конфигурации, перейдите в раздел «Параметры и конфигурация», где вы найдете шаблон данных для заполнения. В случае с файлом .SIDE достаточно скопировать файл, созданный расширением Selenium IDE.
Важно применить параметр -x, поскольку он отвечает за генерацию данных о выполнении в формате XML для последующей обработки. В случае выполнения по умолчанию через Discovery формат получаемых данных - JSON:
При желании можно также запустить плагин из программы Agent, которая не установлена на том же сервере, что и Pandora FMS. Для этого необходимо скачать локально на сервере, на котором размещен программный агент, пакет .disk плагина plugin, переименовать его, изменив формат на .zip, и распаковать содержимое, чтобы получить доступ к бинарному файлу и остальным файлам, которые могут понадобиться для работы.
Что касается необходимой конфигурации, файл также должен быть создан вручную, как упоминалось выше, и вы также должны использовать параметры -x для отправки данных в формате XML и -S для указания IP-адреса и порта сервера Tentacle, который будет получать XML, что обычно является той же машиной, на которой расположен сервер Pandora FMS. Выполнение будет выглядеть примерно следующим образом:
module_plugin /ruta/de/fichero/binario/pandora_selenium -c /путь/к/файлу/конфигурации -s /Улица/с/фишером/side -t имя_задачи -i агентский_интервал -g ID_группа -x -S адрес_IP_Tentacle_сервер:Порт_Tentacle
Важно помнить, что каждый XML, сгенерированный при таком типе выполнения, будет соответствовать отдельному агенту, поэтому модули не будут размещены внутри агента, в котором выполняется плагин.
Наконец, следует отметить, что, несмотря на возможность выполнения подобных операций как вручную с терминала, так и с помощью программного агента, рекомендуется всегда выполнять их из раздела Discovery PFMS, так как метод работы изначально рассчитан именно на такой способ, а конфигурация задачи значительно проще.
Параметры и настройки
| Короткий параметр / длинный параметр | Описание |
|---|---|
-v --verbose | Дополнительно. Отображает информацию о ходе выполнения плагина в формате STDERR. |
-c <task_configuration_file_path> --conf <task_configuration_file_path> | Путь к конфигурационному файлу задания, которое должно быть выполнено. |
-s <side_file_path> --side <side_file_path> | Путь к файлу SIDE, который должен быть выполнен. |
-t <task_name> --task <task_name> | Уникальное имя задания. Он используется для создания временных элементов, не перезаписывающих другие задачи, которые могут быть запущены на том же компьютере. |
-i <agents_interval> --interval <agents_interval> | Дополнительно. Интервал мониторинга агентов, созданных плагином. По умолчанию: 300. |
-g <group_id> --group <group_id> | Дополнительно. Идентификатор группы, в которой вы хотите создать агентов, сгенерированных плагином. По умолчанию: 0. |
-x --xml_mode | Дополнительно. Если указано, то плагин будет генерировать XML-файлы для агентов, а не выводить их через STDOUT. |
-S <server:port> --server <server:port> | Дополнительно. Для генерации агентов с помощью XML. IP-адрес и порт сервера Tentacle, на который следует отправлять XML-файлы. |
-T <temp_folder> --temp <temp_folder> | Дополнительно. Для генерации агентов с помощью XML. Временная директория для XML-файлов, которые создаются перед отправкой на указанный сервер Tentacle. |
Файл конфигурации (--conf)
{
"worker_mode" : "<local | remote>",
"run_mode" : "<driver | docker>",
"browser" : "<chrome | firefox>",
"driver_url" : "http://<selenium_ip>:<selenium_port>/wd/hub",
"ssh_address" : "<ssh_ip>",
"ssh_port" : "<ssh_port>",
"ssh_user" : "<ssh_user>",
"ssh_password" : "<ssh_password>",
"ssh_password_encrypt" : "<1 | 0>",
"ssh_temp_folder" : "<ssh_temp_folder_path>",
"docker_image": "<docker_image>",
"chromedriver_path": "<chromedriver_path>",
"chrome_binary_path": "<chrome_binary_path>",
"chrome_user_data_dir" : "<chrome_user_data_dir>",
"chrome_profile" : "<chrome_profile>",
"geckodriver_path": "<geckodriver_path>",
"firefox_binary_path": "<firefox_binary_path>",
"firefox_profile" : "<firefox_profile>",
"accept_insecure_certs" : "<1 | 0>",
"monitor_stats" : "<1 | 0>",
"browser_width" : "<width>",
"browser_height" : "<height>",
"global_timeout" : "<seconds>",
"wait_between_commands" : "<seconds>"
}
Каждый элемент конфигурации:
worker_mode | Указывает, будет ли транзакция запущена локально или удаленно. |
run_mode |
|
browser | Указывает веб-браузер, который будет использоваться для транзакции. |
driver_url | Указывает URL-адрес сервера Selenium 4 для выполнения транзакции. Только в режиме remote/driver. |
ssh_address | Укажите IP-адрес сервера, к которому вы будете подключаться по SSH для запуска plugin. Только в режиме remote/docker. |
ssh_port | Дополнительно. Указывает номер порта для SSH-соединения. По умолчанию: 22. Только в режиме remote/docker. |
ssh_user | Указывает пользователя для SSH-соединения. Только в режиме remote/docker. |
ssh_password | Указывает пароль пользователя ssh_user. Только в режиме remote/docker. |
ssh_password_encrypt | Дополнительно. Указывает, отправляется ли указанный пароль в зашифрованном виде ('1 ) или нет ('0). Только в режиме remote/docker. Пароли можно зашифровать, выполнив команду plugin с сервера Pandora FMS Discovery. |
ssh_temp_folder | Дополнительно. Указывает путь к временному каталогу для файлов, необходимых во время выполнения на SSH-сервере. По умолчанию: /tmp. Только в режиме remote/docker. |
docker_image | Дополнительно. Указывает имя образа Docker для выполнения транзакции. По умолчанию: pandorafms/pandora_selenium_headless. Только в режиме docker. |
chromedriver_path | Дополнительно. Указывает путь к двоичному файлу chromedriver.1) Только в режиме local/driver |
chrome_binary_path | Дополнительно. Укажите путь к двоичному файлу Google Chrome.2) Только в режиме local/driver. |
chrome_user_data_dir | Дополнительно. Укажите путь к каталогу данных ( data_dir) Google Chrome, который вы хотите использовать. |
chrome_profile | Дополнительно. Укажите имя профиля Google Chrome, который будет использоваться. Он должен находиться внутри data_dir. Если не указано, будет использоваться профиль браузера по умолчанию. |
geckodriver_path | Указывает путь к двоичному файлу geckodriver.3) Только в режиме local/driver. |
firefox_binary_path | Указывает путь к двоичному файлу Mozilla Firefox.4) Только в режиме local/driver. |
firefox_profile | Дополнительно. Укажите путь к каталогу с профилем Mozilla Firefox, который вы хотите использовать. Если он не указан, будет использоваться профиль браузера по умолчанию. |
accept_insecure_certs | Дополнительно. Если установлено значение 1, небезопасные SSL-сертификаты с URL-адресов, доступных во время транзакции, будут автоматически приниматься как действительные. |
monitor_stats | Дополнительно. Если установлено значение 1, модули статистики соединений будут генерироваться по основному URL-адресу указанного SIDE-файла. |
browser_width | Дополнительно. Указывает ширину веб-браузера в пикселях для данной транзакции. По умолчанию: 1920. |
browser_height | Дополнительно. Указывает высоту браузера в пикселях для данной транзакции. По умолчанию: 1080. |
global_timeout | Дополнительно. Указывает глобальный таймаут в секундах для задач, выполняемых плагином, таких как подключение к серверу Selenium, запуск драйверов браузера и т.д. Это также timeout, используемый по умолчанию для выполнения команд Selenium. По умолчанию: 5. |
wait_between_commands | Дополнительно. Указывает время в секундах, которое plugin будет ждать между выполнением каждой команды SIDE. Это значение можно задать в самой программе SIDE с помощью команды setSpeed. По умолчанию: 0. |
Например:
{
"worker_mode" : "local",
"run_mode" : "driver",
"browser" : "chrome",
"driver_url" : "",
"ssh_address" : "",
"ssh_port" : "",
"ssh_user" : "",
"ssh_password" : "",
"ssh_password_encrypt" : "",
"ssh_temp_folder" : "",
"docker_image": "",
"chromedriver_path": "",
"chrome_binary_path": "",
"chrome_user_data_dir" : "",
"chrome_profile" : "",
"geckodriver_path": "",
"firefox_binary_path": "",
"firefox_profile" : "",
"accept_insecure_certs" : "0",
"monitor_stats" : "1",
"browser_width" : "1920",
"browser_height" : "1080",
"global_timeout" : "10",
"wait_between_commands" : "0.2"
}
Команды файла .SIDE
Следующие пользовательские команды могут быть настроены для создания дополнительных модулей (все пользовательские команды должны начинаться с //):
//phase_start:<phase_name> | Указывает на начало фазы, которая будет длиться до тех пор, пока не будет встречена другая команда //phase_start или пока не завершится тест. В результате будет сгенерирован модуль со статусом фазы и другой модуль со временем ее завершения. Например: //phase_start:Login |
//getValue;<module_name>;<module_type>;<regexp> | Он генерирует модуль с содержимым веб-страницы, которое можно получить с помощью регулярного выражения в исходном коде веб-страницы. Например: //getValue;Temperature;generic_data;<span class="temperature">(\d+\.*\,*\d*).*</span> Вы получите температуру, указанную на веб-странице с этой строкой в исходном коде: <p> The temperature of the solar panel is: <span class="temperature">54 º C</span></p> |
//getVariable;<module_name>;<module_type>;<variable> | Генерирует модуль с содержимым переменной, хранящейся в SIDE, с помощью команд store. Например: //getVariable;List count;generic_data;listCount |
//getScreenshot;<module_name> | Генерирует модуль со снимком экрана текущего браузера. Например: //getScreenshot;URL home |
Команды в файлах SIDE, которые можно запускать с помощью плагина, следующие (см. документацию Selenium IDE для использования):
addSelection |
answerOnNextPrompt |
assert |
assertAlert |
assertChecked |
assertConfirmation |
assertEditable |
assertElementPresent |
assertElementNotPresent |
assertNotChecked |
assertNotEditable |
assertNotSelectedValue |
assertNotText |
assertPrompt |
assertSelectedValue |
assertSelectedLabel |
assertText |
assertTitle |
assertValue |
check |
chooseCancelOnNextConfirmation |
chooseCancelOnNextPrompt |
chooseOkOnNextConfirmation |
click |
clickAt |
close |
do |
doubleClick |
doubleClickAt |
dragAndDropToObject |
editContent |
else |
elseIf |
executeScript |
executeAsyncScript |
forEach |
if |
mouseDown |
mouseDownAt |
mouseMoveAt |
mouseOut |
mouseOver |
mouseUp |
mouseUpAt |
open |
pause |
removeSelection |
run |
runScript |
select |
selectFrame |
selectWindow |
sendKeys |
setSpeed |
setWindowSize |
store |
storeAttribute |
storeJson |
storeText |
storeTitle |
storeValue |
storeWindowHandle |
storeXpathCount |
submit |
times |
type |
uncheck |
verify |
verifyChecked |
verifyEditable |
verifyElementPresent |
verifyElementNotPresent |
verifyNotChecked |
verifyNotEditable |
verifyNotSelectedValue |
verifyNotText |
verifySelectedLabel |
verifySelectedValue |
verifyText |
verifyTitle |
verifyValue |
waitForElementEditable |
waitForElementNotEditable |
waitForElementNotPresent |
waitForElementNotVisible |
waitForElementPresent |
waitForElementVisible |
waitForText |
webdriverAnswerOnVisiblePrompt |
webdriverChooseCancelOnVisibleConfirmation |
webdriverChooseCancelOnVisiblePrompt |
webdriverChooseOkOnVisibleConfirmation |
while |
Web Scrapping
С помощью Pandora FMS можно делать webscrapping, хотя она и была разработана для измерения производительности и результатов сложных транзакций, но это вполне осуществимо.
Веб-скраппинг - это техника, используемая для автоматизированного извлечения информации с веб-сайтов. Вместо того чтобы собирать данные вручную, используются программы или скрипты, которые просматривают веб-страницы, выявляют необходимую информацию и сохраняют ее в базе данных или структурированном файле.
То, что описано здесь, можно использовать как для WUX в режиме Discovery (только Selenium 4), так и для WUX в режиме интеграции с сервером (версия 777 или более ранняя), с Selenium 3.
Есть два основных способа сделать это, самый простой - взять значение непосредственно из идентификатора веб-страницы (используя собственный инспектор расширения Selenium console и передавая его в Pandora FMS) или использовать regexp/ для обработки HTML-данных в сырой. В обоих случаях в транзакцию Selenium необходимо ввести дополнительную команду.
Например, использование его в качестве webscrapper для чтения количества оценок для товара в Amazon Store®, использование захвата значения и сохранение его в переменной:
Оно будет сохранено как тип TEXT в переменной под названием REVIEW. И будет создана дополнительная команда echo для отображения значения этой переменной:
Здесь вы видите последние два шага в коде .side, сгенерированном расширением Selenium:
{
"id": "55546183-fc2f-45b5-af7e-2ff27464798f",
"comment": "",
"command": "storeText",
"target": "css=.a-spacing-medium > .a-size-base",
"targets": [
[
"css=.a-spacing-medium > .a-size-base",
"css:finder"
],
[
"xpath=//div[@id='cm_cr_dp_d_rating_histogram']/div[3]/span",
"xpath:idRelative"
],
[
"xpath=//span/div/div/div/div/div/div[3]/span",
"xpath:position"
]
],
"value": "REVIEW"
}
{
"id": "69cd3cea-5981-4011-bb3d-88a1b58dc18e",
"comment": "",
"command": "echo",
"target": "${REVIEW}",
"targets": [],
"value": ""
}
Недостатком этого метода является то, что он будет сохранен в виде текстовой строки, поскольку при использовании идентификатора (в данном случае span) сохраняется все, что находится между тегами с этим идентификатором.
Если вы хотите получить значение более «тонким» способом, используйте метод parse с регулярным выражением для обработки текста:
- Для этого случая будет взято число и преобразовано в числовой модуль в Pandora FMS.
- В качестве исходного кода для
.sideсозданная команда будет преобразована в код, подобный этому. Важно отметить, что такие символы, как двойные кавычки"или символ\, являются escaped. - Необходимо определить участок HTML-кода с текстом, который нужно перехватить, для этого проанализируйте с помощью HTML-инспектора область кода, где будет взято значение, например:
Вы ищете то, что находится между тегами:
<span id="acrCustomerReviewText" class="a-size-base">''
и
</span>
Если применить regexp, то это будет выглядеть так:
<span id="acrCustomerReviewText" class="a-size-base">(\d+) valoraciones</span>
Для этого нужно создать «фиктивную» команду (закомментированную символом//) в конце последовательности Selenium (побег любой символ с " или \) и с помощью команды getValue создать модуль с именем AMZ_001, типом generic_data (т. е. числовой) и предоставить экранированный regexp:
{
"id": "ae557b25-b096-4d6e-baa7-f7219ac16e04",
"comment": "",
"command": [
"//getValue;AMZ_001;generic_data;",
"<span id=\"acrCustomerReviewText\"",
" class=\"a-size-base\">(\\d+) valoraciones</span>"
],
"target": "",
"targets": [],
"value": ""
}
После выполнения это вернет обычные данные Pandora FMS, с которыми можно применять оповещения, включать в графики, отчеты и многое другое.
Поскольку в транзакции используется реальный браузер, вы даже можете установить соединение с конкретным пользователем и осуществить навигацию, чтобы в итоге получить необходимые данные.
WUX Server и Selenium 3
Документация, описанная в техническом приложении «Мониторинг WUX с помощью сервера WUX и Selenium 3».
/usr/share/pandora_server/util/selenium_headless_drivers/chromedriver./usr/share/pandora_server/util/selenium_headless_drivers/chrome/google-chrome./usr/share/pandora_server/util/selenium_headless_drivers/geckodriver./usr/share/pandora_server/util/selenium_headless_drivers/firefox/firefox.


























