ja:documentation:pandorafms:technical_annexes:48_pfms_wux_selenium_3

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) における操作を自動的に記録する仕組みから成ります。これらの記録は、ブラウザ上でのマウスクリック、テキスト入力、ウェブブラウジングでの検索、デスクトップ上でのアプリケーションを開くことなどです。記録した処理を自動的に実行し、処理にかかった時間などの結果を得ることができます。これにより、後で結果を検索して実行できるように自動的に記録することができます。

両方の監視の仕組みは、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 では、すでにあるスクリプトを実行し、その実行を監視することもできます。

どのタイプの監視を行うかを指定することが重要です。 どちらの方法も、対応するマシンにインストールされているソフトウェアエージェントのプラグインによる監視実行に基づいています。

UX および WUX 監視の違い を考慮して、UX の監視は、監視対象の環境に関連する一連の前提条件に従う必要があります。

  • Java® のインストール
  • Mozilla Firefox® のプロファイル設定
  • Selenium® サービスのインストール
  • システム上への PWR の展開
  • Mozilla Firefox® 用の Selenium® IDE の展開
  • PWR セッションの保存

事前に保存されたセッションの標準的な実行には、Pandora UX プラグインの最新バージョン 28-04-2022 を使用します。

WUX サーバでの Selenium デプロイでは、コンテナベースのスタックを使用して、迅速なデプロイと容易なスケーリングを実現します。

DockerとDocker Compose が事前にインストールされている必要があります。

このインストールは、以下にある Docker ドキュメントに従うことをお勧めします。

公式 Selenium イメージは、スタックのインストールと展開に使用されます。 それらは次の場所で見つけることができます。

Selenium リポジトリでは、ブラウザを使用したさまざまなイメージがあります。Pandora FMS の場合は、Firefox® および Chrome® コンテナを推奨します。

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 は、必要なワーカーコンテナーをデプロイするグリッドとして機能するコンテナが有効になっているハブとして機能します。

集中モード(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 に同時に送信できるセッションを示していることに注意してください。

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 コンソールにモジュールとして配置します。

これを行うには、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”に設定されたアラート。

ユーザーのナビゲーション情報を表現するために、2つの新しいウィジェットタイプが追加された:

ナビゲーション・フェーズ・ステータス・ウィジェット

ウェブサイト統計ウィジェット

  • 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 拡張機能でのテストに失敗します。

  • 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

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

  • ja/documentation/pandorafms/technical_annexes/48_pfms_wux_selenium_3.txt
  • 最終更新: 2025/05/16 22:55
  • by junichi