WUX サーバ と Selenium 3 を使用したWUX 監視
概要
User experience monitoring consists of making recordings of automated tasks of both web browsing (PWR/WUX) and interaction with the desktop and Windows system applications (PDR). These recordings can range from a mouse click on a web browser, typing text or performing a web search, to opening an application on the desktop. This allows functions to be configured and automatically recorded for later execution in search of results.
ユーザエクスペリエンス監視は、ウェブブラウジング (PWR / WUX) と Windows システムのデスクトップアプリケーション (PDR) における操作を自動的に記録する仕組みから成ります。これらの記録は、ブラウザ上でのマウスクリック、テキスト入力、ウェブブラウジングでの検索、デスクトップ上でのアプリケーションを開くことなどです。記録した処理を自動的に実行し、処理にかかった時間などの結果を得ることができます。これにより、後で結果を検索して実行できるように自動的に記録することができます。
UX および WUX 監視の違い
両方の監視の仕組みは、Pandora Web Robot Daemon (PWRD) システムを通してウェブブラウジングタスクを実行するために利用されます。
UX システムは、マシンにインストールされたソフトウエアエージェントによって監視を実現します。WUX は、Pandora FMS の内部に統合されたサーバを用いて監視をします。
Pandora Web Robot Daemon (PWRD) は、ウェブブラウジングセッションを自動実行するために必要なサービスです。これは、ユーザの Web ポータルをナビゲートするのに必要なアクションのリストを含むファイルを使用します。
加えて、UX 監視は、Windows デスクトップおよびシステムアプリケーションの自動化タスクを実行することができます。このタイプのタスクは、WUX では実行できません。
Pandora FMS UX は、自動化されたタスクを実行するシステムであり、Pandora FMS に実行結果、所要時間、およびエラーが検出された可能性のあるスクリーンショットを含むレポートを提供します。
UX 向けの Pandora FMS PWR テクノロジーは、ウェブサイトの閲覧、ユーザアクションのシミュレーションを可能にします。 コンテンツ、テキストなどを確認できます。これは、非フラッシュベースの Web サイトおよびアプリケーションを監視するのに最適です。利点としては、より高速でバックグラウンドで実行できることです。
タスクの自動化システムがある場合、Pandora FMS UX では、すでにあるスクリプトを実行し、その実行を監視することもできます。
どのタイプの監視を行うかを指定することが重要です。 どちらの方法も、対応するマシンにインストールされているソフトウェアエージェントのプラグインによる監視実行に基づいています。
PWR UX 監視
UX および WUX 監視の違い を考慮して、UX の監視は、監視対象の環境に関連する一連の前提条件に従う必要があります。
- Java® のインストール
- Mozilla Firefox® のプロファイル設定
- Selenium® サービスのインストール
- システム上への PWR の展開
- Mozilla Firefox® 用の Selenium® IDE の展開
- PWR セッションの保存
事前に保存されたセッションの標準的な実行には、Pandora UX プラグインの最新バージョン 28-04-2022 を使用します。
Selenium 3 による Web User Experience (WUX)
WUX サーバでの Selenium デプロイでは、コンテナベースのスタックを使用して、迅速なデプロイと容易なスケーリングを実現します。
事前設定
DockerとDocker Compose が事前にインストールされている必要があります。
このインストールは、以下にある Docker ドキュメントに従うことをお勧めします。
公式 Selenium イメージは、スタックのインストールと展開に使用されます。 それらは次の場所で見つけることができます。
Selenium リポジトリでは、ブラウザを使用したさまざまなイメージがあります。Pandora FMS の場合は、Firefox® および Chrome® コンテナを推奨します。
Selenium スタックのデプロイ
Selenium スタックをデプロイするには、まず必要な構成を含む YAML ファイルを作成する必要があります。
# To execute this docker-compose yml file use `docker-compose -f up` # Add the `-d` flag at the end for detached execution version: "3" services: selenium-hub: image: pandorafms/pandorafms-selenium-hub mem_limit: 2G container_name: selenium-hub-v3 logging: driver: "json-file" options: max-file: "5" max-size: "4m" mode: "non-blocking" environment: - TZ=Europe/Amsterdam ports: - "4444:4444" chrome: image: pandorafms/pandorafms-selenium-node-chrome mem_limit: 2G volumes: - /dev/shm:/dev/shm depends_on: - selenium-hub logging: driver: "json-file" options: max-file: "5" max-size: "4m" mode: "non-blocking" environment: - TZ=Europe/Amsterdam - HUB_HOST=selenium-hub - HUB_PORT=4444 firefox: image: pandorafms/pandorafms-selenium-node-firefox mem_limit: 2G volumes: - /dev/shm:/dev/shm depends_on: - selenium-hub logging: driver: "json-file" options: max-file: "5" max-size: "4m" mode: "non-blocking" environment: - TZ=Europe/Amsterdam - HUB_HOST=selenium-hub - HUB_PORT=4444
前の例に対して、メモリ制限、タイムゾーン、ノード数など、ケースごとに必要な変更を行います。
設定した内容でコンテナを有効化するには、次のコマンドを実行します。(<compose-file>
は、選択した名前に置き換えてください。)
docker-compose -f <compose-file> up -d
コンテナで実行されているサービスを確認する必要がある場合は、次のコマンドを使用します。
docker-compose -f <compose-file> ps
Selenium サービスの状態とログを表示するには、次のコマンドを使用します。
docker-compose -f <compose-file> logs
適切なチェックが行われた後、グリッドが適切に機能し、ワーカーが設定ファイルでの定義どおりにサインアップしたことを確認するには、次のURLにアクセスします。
http://<ip_selenium_server>:4444/grid/console
ワーカー数を増やす必要がある場合は、次のコマンドを実行します。
docker-compose -f <compose-file> scale chrome=X firefox=Y
Selenium サービスインフラストラクチャ
Pandora FMS 設定
集中モード(WUX)を使用するには、Pandora FMS サーバに以下の設定を適用する必要があります。
選択したモードに関係なく、WUX サーバ設定パラメータを Pandora FMS サーバの設定ファイルに追加することにより、ブラウジングセッションから実行の割り当てができます。
ファイル/etc/pandora/pandora_server.conf
の最後に次の設定を追加します(<ip_wux_host>
をサーバの IPアドレスに置き換えます。Pandora FMS が動作しているのと同じサーバの場合は、127.0.0.1
です。):
wuxserver 1 wux_host <ip_wux_host> wux_port 4444
Pandora FMS サーバの設定ファイルには、キューに入れられたナビゲーションセッションを削除するための新しいトークンがあります。
clean_wux_sessions 1 #(default)
Pandora FMS スレッド管理
wuxserver
スレッド管理は、pandora_server
サービスを起動した際に自動的に行われます。- これは、Selenium hub にある MINOR ブラウザのノード数を考慮して行われます。 例:
- hub に 2 つの Firefox ノードと 2 つの Chrome ノードが設定されている場合、
wuxserver
スレッドの数は 2 になります。 - hub に 1 つの Firefox ノードと 4 つの Chrome ノードが設定されている場合、スレッドの数は 1 になります。
- hub に 6 つの Firefox ノードが設定されている場合、スレッドの数は 6 になります。
各スレッドは、wuxserver
から Selenium hub に同時に送信できるセッションを示していることに注意してください。
付録: Internet Explorer および Microsoft Edge のワーカー追加
Microsoft ブラウザに対して Web トランザクションを起動する必要がある場合は、目的の Windows バージョンのマシン(物理または仮想)を設定し、以下の公式ドキュメントに従ってドライバーを設定する必要があります。
Internet Explorer ドライバインストールドキュメント:
github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver
32bit のバージョン 3.141 のドライバの利用をお勧めします。64bit 版はパフォーマンスの問題があります。
Microsoft Edge ドライバーインストールドキュメント:
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Selenium を実行するには、Java が Windows デバイスにインストールされている必要があります。
Java がインストールされているかどうかを確認するには、次のコマンドを実行します。
java -version
次のような出力が得られます。
サーバをローカルで実行してグリッドに登録するには、Selenium JAR ファイルも必要です。
以下から入手できます。
https://www.selenium.dev/downloads/
Microsoft Edge サーバを有効化にするには、JAR ファイルがあるディレクトリのターミナルで次を実行する必要があります。
java -jar selenium-server-standalone-<VER>.jar -port 5555 -role node -hub http://<ip_selenium_server>:4444/grid/register -browser "browserName=MicrosoftEdge, platform=WINDOWS, maxInstances=1"
このコマンドは Internet Explorer サーバを有効化するのと似ていますが、ダウンロードしたドライバーのパスを指定する必要があります。
java -Dwebdriver.ie.driver=<PATH>IEDriverServer.exe -jar selenium-server-standalone<VER>.jar -port 5555 -role node -hub http://ip_selenium_server:4444/grid/register -browser "browserName=internet explorer, platform=WINDOWS, maxInstances=1"
Windows ファイアウォールは、コマンド実行時に指定されたポートの通信を許可するように設定する必要があります。例では 5555 および 4444。
記録
Selenium バージョン 3 では、新旧両方の記録の両方がサポートされます。
新しいセッションを記録するには、目的のブラウザに Selenium IDE 拡張機能をインストールする必要があります。
Firefox
https://addons.mozilla.org/ja/firefox/addon/selenium-ide/
Chrome
https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd
次のアイコンは、拡張機能をインストールしたあとに表示される、記録を開始するアイコンです。
新しい記録プロジェクトを開始するためのメニューが開きます。
記録が行われると、次のような結果になります。
Pandora FMS には、Selenium の機能とは別に、監視対象から情報を取得するためのカスタムコマンドがあります。
コマンド
利用可能なコマンドの一覧は、こちら を確認してください。
録画を行う際の推奨事項
次に、Selenium IDE とのトランザクションを記録し、最も複雑なコマンドを Pandora FMS と統合するための、一連の推奨事項とアドバイスについて詳しく説明します。
- 可能な場合はいつでも、トランザクションを段階的に分割します。このようにして、状態、時間、スクリーンショットで作成されたモジュールがセグメント化され、トランザクションが失敗したときにそれらを見つけやすくなります。
- 誤検知を回避するには、selenium コマンド
set speed
およびwait for
を使用します。トランザクションを実行するとき、selenium コマンドには、1つのコマンド実行終了から次のコマンドが実行されるまでのデフォルトの遅延がなく、一部のコマンドにもタイムアウトがありません。これにより、トランザクションは可能な限り最短時間で実行されますが、非常に高速に実行することにより、Web がやや遅かったり、ロードに数秒余分にかかる場合、チェックが失敗する可能性があります。たとえば、“click” コマンドを実行して他のページに移動した後、新しいページの要素を使って動作するコマンドがあった場合、読み込みが 1秒遅れると、その要素は見つかりません。新しいページのチェックは失敗に終わります。このような状況を回避するために、コマンド “set speed” があります。これは、各コマンドの間に Target フィールドに指定されたミリ秒数の遅延を追加します。トランザクションの開始時に設定することをお勧めします。ページの読み込みや要素の表示に数秒かかることがわかっている場合は、コマンド “wait for element present” もあります。“wait for visible ” と “wait for test” では、トランザクションを失敗として判断する前に、要素がページに表示されるのを待つ時間をミリ秒単位で設定できます。これらのコマンドを使用すると、チェックの信頼性が大幅に向上しますが、トランザクションの実行にかかる時間も長くなることを考慮することが重要です。
- 既存の要素を確認します。このためには、“assert” や “verify” などのコマンドをさまざまな場面で使用します。たとえば、クリックでトランザクションを終了しても、クリックした要素を新しいページが開くことは保証されません。要素をクリックできることを保証するだけです。クリック後にのみ読み込まれることがわかっている “verify test” を導入すると、クリックによって送信されたページが使用可能かどうかを確認することができます。
- ウィンドウまたはタブ間を移動するトランザクションでは、“store window handle” を使用します。初期ウィンドウに識別子をあらかじめ保存していない場合、ウィンドウの変更(“select window” を使用)は失敗する可能性があります。
- Target by CSS が失敗した場合またはページ内のコンテンツを検索したい場合は、xpath を使用します。デフォルトでは、Selenium IDE レコーダは CSS ロケータ要素の Target にロードしますが、xpath によってロケータもロードします。レコーダの Target ボックスをクリックすると、保存されているすべてのロケータを表示できます。
さらに、xpath を使用すると、ページのタグ内のテキストを検索して、より動的なレコーディングができます。上記のキャプチャでは、特定のロケータではなく、ページのすべてのスパンタグで “Monitoring Innovators” というテキストを検索する xpath を使用できることがわかりました。
- “execute script” コマンドの正しい利用。“execute script” コマンドは、現在選択されているフレームまたはウィンドウのコンテキストでJavaScript のスニペットを実行します。 このガイド( https://ui.vision/rpa/docs/selenium-ide/executescript )を読んで、その使用法と提供されるさまざまなオプションについて学ぶことをお勧めします。ただし、以前に保存された変数の使用(たとえば、“store text” コマンドは、Pandora FMS Web ドライバが正しく解釈できるように、二重引用符で囲む必要があります。これは、“store text” で保存され、後で “execute script” で使用されるように、Pandora FMS サーバが正しく解釈できるようにする変数の例です。引用符で囲まれた変数をこのように使用すると、Selenium IDE レコーダではスクリプトを実行できないことに注意してください。
データ管理と視覚化
Pandora FMS コンソールでウェブ解析モジュールを作成する
録画したブラウジングセッションを Pandora FMS コンソールにモジュールとして配置します。
これを行うには、WUX 機能が有効になっているサーバーに関連付けられたエージェントにアクセスし、オプションCreate a new web analysis module を選択して、ウェブ分析モジュールを作成します:
Createボタンをクリックし、フォームに表示されているすべてのフィールドに必要事項を入力してください:
Name
WUX(親)モジュール。モニタリング結果を持つすべてのサブモジュールは、この新しいモジュールに依存することを忘れないでください。
Run performance tests
パフォーマンステストの開始を指定します。つまり、ブラウジング体験だけでなく、対象ウェブサイトへのアクセスのパフォーマンス統計も監視します。
Execute tests from
チェックを実行するWUXサーバーを示す。
Browser
チェックを実行するウェブブラウザ。
指定されたブラウザは、WUXサーバーが使用するgridまたはSeleniumサーバー上になければなりません。
User data dir
(バージョン 764 以降) オプション:データ用のディレクトリを指定できます。
User data dirオプションはGoogle Chromeウェブブラウザでのみ機能します。
Profile
(バージョン 764 以降) オプション:ユーザー・プロファイルを指定できます。 プロファイル名が存在しない場合は、既定のプロファイルを使用します。
Profileオプションは、Google Chromeウェブブラウザでのみ機能します。
Accept insecure certificates
有効にすると、ナビゲーションの一部である非セキュア証明書(自己署名、期限切れなど)が受け入れられる。
このオプションは Google Chrome® と Mozilla Firefox® ブラウザでのみ利用可能で、Selenium 3 サーバーによってチェックが実行される場合にのみ有効になります。
Historical data
このユーザー・エクスペリエンスをモニターするモジュールの履歴情報を保存するかどうか。
Text area
以前に記録したブラウジングセッションのファイルの内容をコピーする(またはBrowse…ボタンでロードする)。
FF interval
モジュールの実行時間間隔(秒)。
Retries
モジュール起動の再試行回数。
カスタマイズマクロ
カスタムマクロの操作では、ブラウザのセッションファイル内の特定のテキスト文字列を、カスタマイズ可能な特定の値に置き換える。
ウェブ解析モジュールの場合、この機能が強化され、これらの値を可変の日付と時刻に変換できるダイナミックマクロが可能になりました。
なぜこのような機能があるのか?
ブラウザセッションを通じて、ウェブベースの会議室予約アプリケーションが正しく機能しているかを監視する必要があるとします。
例えば、先週の部屋を予約しようとしている場合などです。
また、このような予約には最長期限が設けられている可能性があり、システムは特定の期間内(例えば当月内)に部屋を予約することを義務付けています。
数日ごとにマクロを編集する手間を省き、コンフィギュレーション・セクションを気にする必要がないように、ダイナミック・マクロを使用し、試験日の翌日には常に部屋を予約するようにシステムに指示することができます。
この機能を使用するためには、値が特定のフォーマットを持っている必要があり、以下のような置換が可能です:
@DATE_FORMAT
: 現在の日付/時刻をユーザー定義形式で指定する。@DATE_FORMAT_nh
: 時間.@DATE_FORMAT_nm
: 議事録.@DATE_FORMAT_nd
: 日.@DATE_FORMAT_ns
: おかわり.@DATE_FORMAT_nM
: 月.@DATE_FORMAT_nY
: 年.
ここで “n”は符号なし(正)または負の数である。
そして、“FORMAT”は、以下の基準に従う。 Perl strftime function
例を挙げよう:
@DATE_%Y-%m-%d %H:%M:%S @DATE_%H:%M:%S_300s @DATE_%H:%M:%S_-1h
データの視覚化
WUXによって生成された情報は、以下のようにモジュールの形で表示されます。 モジュール一覧で、hierarchical modeの表示を有効にすると、情報がより明確に視覚化されます:
この階層の中に、以下のモジュールがある:
- モジュール_Global_Status: ナビゲーション全体のグローバルステータスを示すものでなければならない。
- 録画がある場合は、WUXの録画状況が表示されます。
- パフォーマンス・テストの実行」が有効であるが録画が含まれていない場合、グローバル・ステータス・モジュールのステータスは、これらのモジュールを取得する際に実行されるチェックのステータスとなる。
- モジュール_Global_Time: これは、完全な航行に要したグローバルな時間を示すものでなければならない。
- モジュール_Global_Screenshot: ナビゲーションエラーの結果を示す画像が含まれる。
- モジュール_Phase X: 数 fase_Status: フェーズXの間の航行状態を示すものとする。
- モジュール_Phase X: 数 fase_Time: フェーズXに費やされた時間を示す。
例:エラーキャプチャビュー。
注意: 以前のバージョンからPandora FMS 7.0 NG 712にアップグレードした場合は、ちょっとした変更が必要です。
WUX Serverによって生成されたスクリーンショットを保存するには、データベーススキーマで以下の操作を起動する必要があります:
ALTER TABLE tagente_estado MODIFY COLUMN datos mediumtext; ALTER TABLE tagente_datos_string MODIFY COLUMN datos mediumtext;
これらの措置をとらなかった場合、キャプチャが切断される可能性がある。
エージェントのWUXセクションにアクセスすることで、取引の詳細とそのフェーズを見ることができます:
ウェブサイトの統計は以下の通りである:
- Stats_TT: ウェブサイトを取得するための合計時間。
- Stats_TDNS: ターゲットIPアドレスの解決にかかる合計時間。
- Stats_TTCP: TCP経由での接続にかかった時間。
- Stats_TSSL: SSL通信の確立にかかる時間。
- Stats_TST: データ転送が開始されるまでの経過時間。
- Stats_TTC: データ転送時間。すべてのリソース転送時間を集約する。
- Stats_TTR: ページ内容の転送にかかる時間。
- Stats_TTR_main: HTMLコードの転送にかかる時間。
- Stats_TTR_image: 画像タイプのリソースの転送にかかる時間 (
png|jpg|jpeg|bmp|tiff|gif|webp|svg
). - Stats_TTR_css: スタイルシートの転送にかかる時間。
- Stats_TTR_js: JavaScriptファイルの転送にかかる時間。
ウェブ解析モジュールにアラートを割り当てる
ウェブ解析モジュールに関連するアラートは、Pandora FMS のアラートシステム全体と同じように動作します。
互換性のために、ウェブ解析モジュールによって自動生成されるサブ要素に、例えば以下のようなアラートテンプレートを割り当てることをお勧めします:
- グローバルナビゲーションの現状。
- 時間しきい値でアラート。
- 結果画像キャプチャモジュールの警告テンプレートが “always”に設定されたアラート。
ダッシュボードの新しいウィジェット
互換性のあるコマンド一覧
内部コマンド
- run: テストを実行します。
- build_transaction: 過去のテスト(内部)に基づいてトランザクションを事前構築します。
- get_transaction: 常に結果、フェーズの順序で、現在のトランザクションを返します。変数を取得するために使用されます。
- sessions: Hub に存在するセッションの一覧を取得します。
- kill_sessions: Hub 内の既存のセッションをすべて削除します。
追加コマンド
- extract: 'ソース' と独自のコードを組み合わせて抽出します。
- storeExtraction: 抽出結果を変数に格納します。
- dispatchEvent: 指定された要素で Javascript イベントを発生させます。
- takeElementScreenshot: 特定の要素のスクリーンショットを撮ります。
- phase_start: フェーズを開始し、テストを WUX トランザクションに変換します。
- phase_end: フェーズを完了します。
- clickAndWait: Selenium 3 でこの Selenium 2 コマンドの動作をシミュレートします。
- waitForPageToLoad: Selenium 3 でこの Selenium 2 コマンドの動作をシミュレートします。
モジュールを生成するコマンド
- getValue: 値を取得します:
getValue;module_name;module_type;REGEX_capture
- getVariable (バージョン NG 753 以降) 変数から特定の値を取得します。
getVariable;module_name;module_type;variable_name
- getScreenshot: スクリーンショットを取得します:
getScreenshot;module_name
独自のコマンドはすべて、コメントとしてテストファイル(.side
)に記述する必要があります。 そうしないと、Selenium 拡張機能でのテストに失敗します。
レコーディング拡張機能によって提供されるコマンド(v3)
- 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
- doubleClick
- doubleClickAt
- dragAndDropToObject
- echo
- editContent
- else
- elseIf
- end
- executeScript
- executeAsyncScript
- if
- mouseDown
- mouseDownAt
- mouseOver
- mouseUp
- mouseUpAt
- open
- pageLoadTimeout
- pause
- removeSelection
- select
- selectFrame
- selectWindow
- sendKeys
- setSpeed
- setWindowSize
- store
- storeAttribute
- storeJson
- storeText
- storeTitle
- storeValue
- storeWindowHandle
- storeXpathCount
- submit
- type
- uncheck
- verify
- verifyChecked
- verifyEditable
- verifyElementPresent
- verifyElementNotPresent
- verifyNotChecked
- verifyNotEditable
- verifyNotSelectedValue
- verifyNotText
- verifySelectedLabel
- verifySelectedValue
- verifyText
- verifyTitle
- verifyValue
- waitForElementEditable
- waitForElementNotEditable
- waitForElementNotPresent
- waitForElementNotVisible
- waitForElementPresent
- waitForElementVisible
- waitForText ( Version NG 752 or later )
- webdriverAnswerOnVisiblePrompt
- webdriverChooseCancelOnVisibleConfirmation
- webdriverChooseOkOnVisibleConfirmation