WUX サーバ と Selenium 3 を使用したWUX 監視

概要

ユーザエクスペリエンス監視 は、Web ナビゲーション (PWR/WUX) と Windows システムのデスクトップとアプリケーション (PDR) とのやり取りの両方の自動タスクの記録する仕組みから成ります。

これらの記録は、Webブラウザでのマウスクリック、テキスト入力、Web検索の実行、デスクトップでのアプリケーションの起動など、多岐にわたります。これにより、機能の設定や自動記録が可能になり、後で実行して結果を求めることができます。

UX および WUX 監視の違い

両方の監視の仕組みは、Pandora Web Robot Daemon (PWRD) を通してウェブブラウジングタスクを実行するために利用されます。

UX システムは マシンにインストールされたエンドポイント を介してこれらの監視を実行しますが、WUX (Web User Experience) 監視は Pandora FMS 内に統合されたサーバに依存します。

PWRD は、Web 閲覧セッションを自動化するために必要なツールを提供するサービスです。監視対象の Web ポータルをナビゲートするために必要なアクションのリストを含むファイルを使用します。

加えて、UX 監視は、Windows デスクトップおよびシステムアプリケーションの自動化タスクを実行することができます。このタイプのタスクは、WUX では実行できません。

Pandora FMS UX は、自動タスクを実行し、実行結果、所要時間、見つかったエラーのスクリーンショットに関するレポートを Pandora FMS サーバに提供するシステムです。

タスク自動化システムが利用可能な場合、Pandora FMS UX では事前に作成されたスクリプトの実行も可能であり、その実行を監視することもできます。

  • どのタイプの監視を使用するかを明確にすることが重要です。どちらの方法も、それぞれのマシンにインストールされたエンドポイント上のプラグインを介して監視を実行することを前提としています。

PWR UX 監視

UX 監視と WUX 監視の違い を考慮して、一般に、UX 監視では、監視対象の環境に関連する一連の前提条件を満たす必要があり、以下の事前手順を実行する必要があります。

  • 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® がインストールされている必要があります。ベースオペレーティングシステムとしては Rocky Linux® 9 を推奨します

Docker をインストールするには、使用しているオペレーティングシステムに応じたドキュメントに従ってください。

Selenium® の場合、スタックのインストールとデプロイメントには公式イメージを使用します。

Selenium® リポジトリには、ブラウザに対応した様々なイメージが用意されています。Pandora FMS の場合は、Mozilla Firefox® および Google Chrome® コンテナを推奨します。

Selenium スタックのデプロイ

Seleniumスタックをデプロイするには、タスク専用のディレクトリを作成する必要があります。その中に、必要な設定を記述した compose.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

前の例では、メモリ制限、タイムゾーン、ノード数など、各ケースに応じて必要な変更を行う必要があります。

タスク用に作成されたディレクトリ内で、定義された構成でコンテナを起動して実行するには、次の手順を実行します。

docker compose up -d

ンテナ内で実行中のサービスを確認するには:

docker compose ps

Selenium サービスのステータスと ログ を表示するには:

docker compose logs

必要なチェックが完了したら、グリッド が正しく動作していること、および ワーカー が設定ファイルで定義されたとおりに登録されていることを確認するために、次の URL にアクセスする必要があります。

http://<ip_selenium_server>:4444/grid/console

ワーカーの数(XY)を増やす必要がある場合:

docker compose scale chrome=X firefox=Y

Selenium サービスインフラストラクチャ

Selenium は、必要な ワーカー コンテナをデプロイするための グリッド として機能するコンテナが起動される HUB として動作します。

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 スレッド管理

  1. wuxserver スレッドの管理は、pandora_server サービスの起動時に自動的に行われます。
  2. これは、Selenium hub 内の下位ブラウザノードの数に基づいて行われます:
  • hub に Firefox ノードが 2 台、Chrome ノードが 2 台設定されている場合、wuxserver のスレッド数は 2 になります。
  • hub に Firefox ノードが 1 台、Chrome ノードが 4 台設定されている場合、スレッド数は 1 になります。
  • hub に Firefox ノードが 6 台設定されている場合、スレッド数は 6 になります。

各スレッドは、wuxserver から Selenium hub に同時に送信できるセッションを示すことを常に念頭に置いてください。

付録: Internet Explorer および Microsoft Edge のワーカー追加

Microsoft® ブラウザに対して Web トランザクションを開始する必要がある場合は、必要なバージョンの MS Windows® でマシン (物理または仮想) を構成し、公式ドキュメントに従ってドライバーを設定する必要があります。

Internet Explorer® ドライバインストールドキュメント:

https://www.selenium.dev/documentation/ie_driver_server/

64 ビットバージョンのパフォーマンスの問題を回避するには、ドライバー 3.141 の 32 ビットバージョンを使用することをお勧めします。

Microsoft Edge® ドライバーインストールドキュメント:

https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

Selenium を実行するには、MS Windows® デバイス に Java® がインストールされている必要があります。

Java® がインストールされているかどうかを確認するには、次のコマンドを実行します。

java -version

次のような出力が得られます。

サーバをローカルで実行し、グリッド に登録するには、Selenium の JAR ファイルも必要です。これは以下の場所から入手できます。

https://www.selenium.dev/downloads/

Microsoft Edge® サーバを起動するには、ダウンロードした JAR ファイルが配置されているディレクトリのターミナルで、次のコマンドを実行します ( すべてを 1 行にまとめ、簡略化のために分割しています )。

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® サーバを起動する場合も、コマンドは同様で、ダウンロードした driver へのパス <PATH> を指定します (簡略化のために、すべてを 1 行に分割しています):

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"

実行コマンドで指定されたポート番号 (このドキュメントでは、55554444 が使用されています) のトラフィックを許可するように MS Windows® ファイアウォールを構成する必要があります。

記録

Selenium バージョン 3 では、古いバージョンとの互換性は 部分的 ですが、古い記録と新しい記録の両方がサポートされます。

新しいセッションを記録するには、目的のブラウザに Selenium IDE 拡張機能をインストールする必要があります。

Firefox

https://addons.mozilla.org/es/firefox/addon/selenium-ide/

Chrome

https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd

拡張機能がインストールされると、アイコン を使用して記録環境を起動できるようになります。

これをクリックすると、新しい記録プロジェクトを開始できるメニューが開きます。

記録が行われると、次のような結果になります。

Selenium によって提供される機能の他に、Pandora FMS には監視対象から情報を抽出するための カスタムコマンド が含まれています。

コマンド

Pandora FMS で使用できる互換性のあるコマンドの一覧は、こちら にあります。

録画を行う際の推奨事項

ここでは、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 ドライバが正しく解釈できるように、二重引用符で囲む必要があります。

これは、Pandora FMS サーバが正しく解釈できるように、変数を store text で保存し、execute script で使用する例です。この引用符で囲んだ変数の使用は、Selenium IDE レコーダーで スクリプト を実行する際にエラーとなります。

データ管理と視覚化

Pandora FMS コンソールでウェブ解析モジュールを作成する

ブラウジングセッションの記録が完了したら、それを Pandora FMS Web コンソールにモジュールとして展開します。

これを行うには、WUX 機能が有効になっているサーバに関連付けられている任意のエージェント に移動し、モジュールの作成(Create Module) ボタンをクリックします。

作成(Create) ボタンをクリックすると、フォームに表示されるフィールドに入力する必要があります (このトピックに関連するフィールドのみが表示されます)。

  • 名前(Name): WUX モジュール ()。監視結果を持つすべてのサブモジュールは、この新しいモジュールに依存することに注意してください。

  • テスト実行元(Execute tests from): チェックを実行する WUX サーバーを指定します。デフォルトでは なし(NOne) に設定されているため、リストからサーバーを選択します。

  • パフォーマンステストの実行(Run perfoemance tests): パフォーマンステストを実行するかどうかを指定します。つまり、ブラウジングエクスペリエンスと、対象 Web サイトへのアクセスのパフォーマンス統計を監視します (対象 Web サイト(Target web site) フィールド)。

  • ブラウザ(Browser): チェックを実行する Web ブラウザ。 IE および Edge ブラウザとの互換性は試験段階であり、テストは期待どおりに動作しない可能性があります。

    指定されたブラウザは、WUX サーバーが使用する グリッド または Selenium サーバにリストされている必要があります。

  • ユーザデータディレクトリ(User data dir): オプション。Google Chrome を使用する場合のみ、データ用のディレクトリを指定できます。

  • プロファイル(Profile): オプション。Google Chrome を使用する場合のみ、ユーザープロファイルを指定できます。 プロファイル名が存在しない場合は、デフォルトのプロファイルが使用されます

  • 安全でない証明書を受け入れる(Accept insecure certificates):有効にすると、ブラウジングプロセスの一部として、安全でない証明書(自己署名証明書、期限切れ証明書など)を受け入れます。

    このオプションは、Selenium 3 サーバを搭載した Google Chrome® および Mozilla Firefox® ブラウザでのみ使用できます。

  • HTML または Side(Selenium 3 のみ)形式で Selenium テストをアップロードする(Upload your selenium test in html or side (only Selenium 3)ファイルを選択(Select file) ボタンを使用して、以前に記録したブラウジングセッションファイルの内容をアップロードします。

カスタムマクロ

カスタムマクロの機能では、ブラウジングセッションファイル内の特定のテキスト文字列をカスタマイズ可能な値に置き換えることができます。

Web 分析モジュールでは、この機能が改善され、動的マクロ が可能になり、これらの値を 可変の日付と時刻 に変換できるようになりました。

なぜこのような機能があるのか?

ブラウザセッションを通じて、ウェブベースの会議室予約アプリケーションが正しく機能しているかを監視する必要があるとします。

フォームに記入する際に固定の日時を設定すると、いつの間にか過去の日時になってしまうため、システムによって予約がキャンセルされる可能性があります。

予約に最大時間制限があり、特定の時間枠内に部屋を予約するようにシステムによって強制される 可能性もあります。

数日ごとにマクロを編集する必要をなくし、構成部分を気にせずに済むように、動的マクロを使用して、Web テストの翌日に会議室を常に予約するようにシステムに指示することができます。

この機能を使用するには、値が特定の形式に従う必要があり、次の置換が可能になります。

  • @DATE_FORMAT: 現在の日付/時刻をユーザー定義形式で指定する。
  • @DATE_FORMAT_nh: 時間.
  • @DATE_FORMAT_nm: 議事録.
  • @DATE_FORMAT_nd: 日.
  • @DATE_FORMAT_ns: おかわり.
  • @DATE_FORMAT_nM: 月.
  • @DATE_FORMAT_nY: 年.

ここで、“n” は符号なし(正)または負の数で、FORMAT は Perl の strftime の標準に従います。

@DATE_%Y-%m-%d %H:%M:%S
@DATE_%H:%M:%S_300s
@DATE_%H:%M:%S_-1h

データの視覚化

WUX によって生成された情報はモジュールの形式で表示され、モジュールのリストで階層モードで表示を有効にすると、情報がより明確に表示されます。

この階層には次のものがあります:

  • モジュール_Global_Status: ナビゲーション全体のoverallステータスを示すものを含みます。
  1. 記録がある場合は、WUX 記録のステータスが表示されます。
  2. パフォーマンステストの実行(Run performance Test) が有効になっているが、記録が含まれていない場合、グローバルステータスモジュールのステータスは、これらのモジュールの取得時に実行されたチェックのステータスになります。
  • モジュール_Global_Time: ナビゲーション全体に費やされた合計時間が表示されます。
  • モジュール_Phase X: フェーズ名_Status: フェーズ X 中のナビゲーションステータスを示します。
  • モジュール_Phase X: フェーズ名_Time: フェーズ X に費やされた時間を示します。
  • モジュール_Global_Screenshot: ナビゲーションエラーの結果を示す画像が含まれます。

エージェントの WUX コンソール(WUX Console) にアクセスすると、トランザクションとそのフェーズに関する追加の詳細を表示できます。

ウェブサイトの統計は、次の概念にまとめられます。

  • 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ファイルの転送にかかる時間。

ウェブ解析モジュールにアラートを割り当てる

Web 分析モジュールに関連付けられたアラートは、Pandora FMS の アラートシステム 全体と同じ動作ダイナミクスに従います。

互換性を確保するために、Web 分析モジュールによって自動生成されたサブ要素にアラートテンプレートを割り当てることをお勧めします。

  • グローバルナビゲーションの状態。
  • 時間しきい値でアラート。
  • 結果画像キャプチャモジュールの警告テンプレートが “always” に設定されたアラート。

ダッシュボードのウィジェット

ユーザナビゲーション情報を表示するために、ダッシュボードに 2 種類のウィジェットを追加しています: エージェント WUX トランザクション(Agent WUX transaction)WUX トランザクション統計(WUX transaction stats):

サポートされているコマンド一覧

内部コマンド

  • run: テストを実行します。
  • build_transaction: 過去のテスト(内部)に基づいてトランザクションを事前構築します。
  • get_transaction: 常に結果、フェーズの順序で、現在のトランザクションを返します。変数を取得するために使用されます。
  • sessions: Hub に存在するセッションの一覧を取得します。
  • kill_sessions: Hub 内の既存のセッションをすべて削除します。

追加コマンド

  • extract: 'ソース' と独自のコードを組み合わせて抽出します。
  • storeExtraction: 抽出結果を変数に格納します。
  • dispatchEvent: 指定された要素で Javascript イベントを発生させます。
  • takeElementScreenshot: 特定の要素のスクリーンショットを撮ります。
  • phase_start: フェーズを開始し、テストを WUX トランザクションに変換します。
  • phase_end: フェーズを完了します。

モジュールを生成するコマンド

  • getValue: 値を取得します:

getValue;module_name;module_type;capture_REGEX

  • getVariable: 変数から特定の値を取得します。

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
  • webdriverAnswerOnVisiblePrompt
  • webdriverChooseCancelOnVisibleConfirmation
  • webdriverChooseOkOnVisibleConfirmation

Pandora FMS ドキュメント一覧に戻る