ユーザエクスペリエンス監視 (UX および WUX)
Pandora FMSによるWUXの紹介
ウェブユーザエクスペリエンスモニタリング(User Experience Monitoring, UX Monitoring Pandora FMS の用語では、単に WUX) は、ユーザがウェブサイトやウェブアプリケーションをどのように操作しているかのデータをリアルタイムに収集、分析、評価するプロセスです。 その目的は、ユーザ体験を改善するために、パフォーマンス、ユーザビリティ、アクセシビリティの問題を検出することです。
Pandora FMS WUX は、この目的に特化したバックエンド(Selenium®)を使って、合成モニタリング(Synthetic Monitoring)を行います。 つまり、Pandora FMS は、リモートサイト(Google Chrome®, Mozilla Firefox®など)とやりとりするために実際のブラウザを利用します。
- 実際のユーザーが問題を経験する前に問題を検出します。 実際のユーザーからリアルタイムの閲覧データを収集する(webscrapping)。
- ロード時間、インタラクション、エラー、ユーザー行動などの指標を測定します(ウェブ分析)。
- 例 ページロード、レスポンスタイム、(ウェブの)スクリーンショット、異なるデバイスでのテスト、ロギングを必要とする複雑なアプリケーションのテスト、JavaScript®によるインタラクション、テキスト入力、あるフィールドから別のフィールドへ、あたかもユーザーが行ったかのようにデータを渡す、マウスクリック、待ち時間などの測定。
WUX と、Pandora FMS が WEB サーバで行う他の WEB モニタリングの違いは何ですか?
WEB サーバーは基本的な HTTP リクエストを使用し、セッションをシミュレートすることはできますが、実際のブラウザーではないため、JavaScript を実行したり、最新のブラウザーをエミュレートすることはできません。 シンプルなWEBテストであれば通常のWEBテストでも問題ありませんが、WUXはもっと強力です。
Pandora FMSにはどのようなバージョンのWUXがありますか?
- エージェントベースのWUX(Seleniumバージョン2)、バージョン740まで。
- WUXはWUXサーバー(Selenium 3)で集中管理され、バージョン780まで。
- WUXはDiscovery PFMS (Selenium 4)のプラグインとして集中管理されています。
780 より前のバージョンでは、WUX は Pandora FMS サーバ(WUX サーバ)の一部として動作していました。 現在でも可能ですが、WUX を Discovery PFMS で集中モードで利用するよりもセットアップが複雑になります。
Discovery PFMSで集中管理されているWUXもSelenium 4をベースにしており、プラグインとしてエージェントから(オプションで)使用することができます。 WUXサーバーで動作したトランザクションファイル(.side
)は、WUX Discovery PFMSで動作します。
WUX Server (Selenium 3)の使用方法に関する情報は、別館WUX monitoringにあります。
WUX / ディスカバリー・アーキテクチャ
この Selenium 4 用プラグインの動作は、Pandora FMS Discovery Server を利用しています。 前述のように、以前は WUX サーバと呼ばれる専用サーバを使用していましたが、Discovery PFMS を使用することも可能です。
It is now able to perform executions using Selenium 4, hence its name, and is also compatible with Selenium 3 transactions (which may have been previously executed in an environment thanks to a WUX Server).
トランザクションの実行に関して、Seleniumへの接続には4つの方法があります。があります。
前提条件
主な要件は、プラグインを実行するサーバーがSelenium 4スタックに接続できること、そしてこのサーバーが監視するウェブサイトのURLと通信できることです。
このWUXプラグインには、各トランザクションで実行される4つの異なるSelenium接続メソッドがあるので、それぞれのケースで必要な実行モードに要件を調整する必要があります。
Local Driver
プラグインは、それが実行されているコンピュータ上で見つかった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 ライブラリからパッケージでダウンロードし、デフォルトのパスで解凍することができます。
このモードでブラウザを起動するには、そのブラウザ固有の依存関係もシステムにインストールされていなければならない。
- Mozilla Firefox:
gtk3
,alsa-lib
,libX11-xcb
. - Google Chrome:
nss
,libdrm
,mesa-libgbm
.
Remote Driver
プラグインは URL で示される Selenium 4 サーバーに接続するので、プラグインを実行しているサーバーから Selenium 4 サーバーのリスニングポート (デフォルトでは 4444
TCP) にアクセスする必要があります。
Local Docker
このプラグインは、ローカルドライバモードで指定されたドライバを含むイメージを使って実行するサーバ上でDockerコンテナを起動し、実機からの依存関係を抽象化します。
デフォルトでは、pandorafms/pandora_selenium_headless
イメージが使用され(実行毎に異なるイメージを指定することも可能です)、ドライバはDocker内で以下のパスで検索されます:
- Google Chrome バイナリ:
/tmp/lib/chrome/google-chrome
. - Chromedriver:
/tmp/lib/chromedriver
. - Mozilla Firefox バイナリ:
/tmp/lib/firefox/firefox
. - Geckodriver:
/tmp/lib/geckodriver
.
Remote Docker
プラグインはユーザー名とパスワードを使って SSH 経由でリモートサーバーに接続し、そのサーバー上でプラグイン自身のコピー (その時点でコピーされたもの) を local docker モードで実行します。 したがって、上記のモード要件に加えて、指定したポート (デフォルトでは 22
TCP) で指定した認証情報を使って SSH 経由でリモートサーバーに接続できるようにする必要があります。
SSH接続に指定されたユーザは、Dockerコンテナを起動し、一時ディレクトリにコピーされたファイルにアクセスするのに十分な権限を持っている必要があります。 リモートサーバーへのファイルのコピーには一時ディレクトリが使用されます(デフォルトでは /tmp
)が、実行ごとに異なるパスを指定することもできます。
任意条件
すべての実行モードにおいて、必要に応じて、各取引にGoogle ChromeまたはMozilla Firefoxのプロファイルを使用することが可能である。 この機能を使用する場合、トランザクションを開始するサーバー (local または remote) にこれらのプロファイルへのパスが含まれていることを確認する必要があります。
Dockerの実行モード(local、remote)では、プロファイルフォルダへのパスを持っている必要があります。
また、各実行で示されたSIDEのメインURLへの接続統計を監視することも可能です。 そのためには、プラグインを起動するコンピュータに curl 実行ファイルがインストールされている必要があります。
テストの実行が remote driver モードで行われる場合、統計情報は Selenium 4 サーバーからではなく、プラグインを実行しているサーバーから取得することに注意してください。
ディスカバリーPFMSでWUXを使用する
ディスカバリーPFMSプラグインのインストール
Selenium 4 で WUX モニタリングを利用するためには、Pandora FMS ウェブコンソールのディスカバリセクションに .disco
をインストールする必要があります。 これは、Manage disco packagesビューから、.disco
タイプのファイルを選択して、Pandora FMS ライブラリからプラグインをダウンロードすることで実行できます:
Selenium IDEによるトランザクション記録
これらのトランザクションを実行するには、Google ChromeまたはMozilla Firefoxブラウザで利用可能なSelenium IDE拡張機能を使用して事前に保存しておく必要があります。 拡張機能を開いた後、新しいプロジェクトに保存するか、既存のプロジェクトを開くか、新しいプロジェクトを作成するか、単に拡張機能を閉じるかを選択するよう求められます。
最初のオプションを選択すると、作成するプロジェクトに名前を付け、録画のベースURLを入力するよう求められます。
3つ目のオプションを選択した場合、プロジェクト名の入力のみが求められるため、過去の録画がない場合は、ベースとなるURLアドレスを手動で入力して録画を開始する必要があります。
以上の手順で拡張機能の準備ができたら、次にすることは、画面の右上にあるRECボタンをクリックすることです。 選択したブラウザに新しいウィンドウが開き、URLベースセクションに示されたページがロードされます。 この瞬間から、このウィンドウで実行されたアクションは Selenium IDE 拡張プロジェクト に保存されます。
トランザクション実行の後半でモニターするすべてのアクションが実行されたら、Stop recordingボタンをクリックします (RECボタンがあった場所)で録音を停止します。 トランザクションテストの名前を入力するプロンプトが表示されます。 複数のテストがある場合、後で Pandora FMS にロードする際に、順次実行されます。 プロジェクトの各テストに対して、新しいエージェントが作成されます。
その後、以下のようなビューが表示される:
必要であれば、フェーズセパレーター、コメント、待機コマンドなどのコマンドを手動で追加することも可能です (wait)。
セクションSIDEファイルのコマンドにサポートされているコマンドの完全なリストがあります。
これらのコマンドを現在の録音に追加するには、既存のコマンドのいずれかを右クリックし、Insert new commandオプションをクリックします:
これにより、クリックしたコマンドの上に空のコマンド行が挿入され、これを編集してコマンドを手動で追加することができます Insert new commandフィールドに希望のコマンドを入力するだけです:
例えば、フェーズ開始コマンドを使用する:
//phase_start:フェーズ名
新しいphase_start
コマンドが表示されたとき、またはそれが失敗したときに、トランザクションが終了する。
録画が終了し、使用したい追加コマンドの設定が完了したら、プラグイン実行の設定で使用できる .side
ファイルを生成します。 これを行うには、Selenium IDE ウィンドウの右上にあるディスケットアイコンをクリックし、簡単に見つけられるパスにファイル名を付けて保存します。
.side
ファイルが生成されたら、それを開いてみると、実際はJSONファイルであることがわかる。 このJSONフォーマットの内容は、プラグイン設定のTest setupステップのSelenium IDE JSONボックスにコピー&ペーストしなければなりません。
ディスカバリーからのトランザクション実行
Pandora FMS ウェブコンソールのディスカバリツールから録画を実行するには、アプリケーションメニューから Selenium 4 を使ってタスクを作成します (Management → Discovery → Applications):
タスクには名前を指定し、グループを割り当てる必要があります。 説明を追加したり、インターバル時間や実行タイプなどの他の重要なパラメーターを変更することも可能である:
次のステップでは、以下のパラメータが表示されます:
これらによって、トランザクションがどのウェブブラウザで実行されるかを指定するだけでなく、前述の4つの利用可能な実行モードから1つを選択することができる。 互換性のために、Selenium IDEでトランザクションが保存されたのと同じブラウザであることを推奨します。
実行のタイプが指定されると、どのオプションが選択されたかに応じて、異なる設定オプションが表示される。
Local Docker
デフォルトでは使用する画像が表示されているので、別の画像を使用したい場合以外は何も記入しないでください。 トランザクションの実行において特定のユーザーのプロファイルを使用する必要がある場合は、そのユーザーを指定する必要があります。 また、使用するブラウザープロファイルのパスを指定することもできます。
Remote Docker
タスクを実行するリモートサーバーにSSHで接続するために必要なデータを指定する必要がある。 接続データには、IPアドレスまたはFQDN、SSHポート、アクセス認証情報が必要です。
テンポラリパスは実行に必要なファイルをホストし、それ以外のフィールドはローカルDockerの実行と同じです。
Local Driver
このタイプの実行では、Pandora FMS ライブラリからダウンロードできる、実行に必要なドライバのパスを指定できます。
トークンについては、一番下にある:
- Virtual display: 仮想デスクトップを使用する実行に使用する。 指定しない場合、タスクを実行するサーバーには物理デスクトップ(モニター)が接続されている必要がある。
- Headless driver: 非デスクトップ環境に適したこのモードで実行するために使用されるブラウザのため。
両方のトークンにチェックを入れておくことをお勧めします。
Remote Driver
4番目のモードでは、リモートドライバへの接続URLを指定する必要があります。 userパラメータとprofileパラメータの動作は前述と同じです。
接続モードを選択した後、タスク構成を確定する前に最後のステップを設定しなければならない。
安全でない証明書の受け入れや、時間統計の監視を指定することも可能である。 また、トランザクションが実行される画面解像度、グローバル・タイムアウト時間、記録コマンド間の待ち時間など、その他の設定パラメータもある。
最後に、トランザクションの記録のステップで示したように、.side
フォーマットのJSONコンテンツを、Selenium IDE JSON最後のフィールドに入力する必要があります。
タスクが設定された後、数秒後に自動的に実行されるが、最初のステップでタスクがどのように設定されたかに応じて、タスクを強制的に手動で実行する必要がある。
実行が終了すると、タスクからどのエージェントが作成されたか、どのエージェントがテストエージェントに属するか、それぞれのタイプがいくつあるかを示すサマリビューを確認することができます。
ディスカバリーPFMSタスク結果
この例の場合、Selenium プロジェクトは Selenium 4
と名付けられ、Test 1
と Test 2
という 2 つの異なるテストがあります。 タスク構成中にオプションMonitor time statisticsがチェックされた場合、パフォーマンスデータをホストするプロジェクト名でエージェントが作成されます。
一方、記録されたトランザクションのエージェントも、テストごとに 1 つずつ作成される。 この場合、Test 1
とTest 2
という名前のエージェントが2つ存在することになる:
モニター結果
実行後、エージェントはトランザクションデータとともに作成され、このトランザクショ ンの実行のためのモジュールを含む。 パフォーマンスデータを持つエージェントには、この情報のためのモジュールと、Monitor time statisticsオプションが、タスク設定の最後のステップであらかじめ有効になっている必要があります。
テストエージェントに追加されるモジュールは、少なくとも以下の3つである:
- Global status: テストが正しく完了したか、ある時点で失敗したかを示す。
- Global time: これは、テスト完了までに要した秒数を示す数値モジュールである。
- Last error screenshot: テストが失敗した場合、失敗が発生したときにブラウザに表示されたスクリーンショットがこのモジュールに保存される。
Global statusとLast error screenshotモジュールの説明では、Selenium エンジンから返されたエラーのテキストが表示されます。
トランザクションにフェーズが設定されている場合、各フェーズのステータスと時間を示すモジュールが、以前のものに加えて作成される。 Global time、各フェーズのタイムモジュールの合計である必要はないことを知っておくことが重要である。 Global time、ブラウザが開いたり閉じたりするのに使われる時間も含まれるからです。
パフォーマンス・データに関しては、サイトに到達するまでの各操作にかかった時間をミリ秒単位で示している。 この場合、以下のようになる:
- URL stat DNS: URLのDNS解決にかかる時間。
- URL stat TSSL: SSL接続の確立にかかる時間。
- URL stat TST: 最初のバイトを受信するまでの時間。
- URL stat TT: URLへのアクセスにかかる総トランザクション時間。
- URL stat TTC: TCP接続時間。
- URL stat TTCP: 接続がデータ転送可能になるまでの時間。
- URL status: URLへの接続が可能かどうかを監視する。
エージェントには、WUX データ専用のビューもあります。 それは、右上のタブで見つけることができます:
ダッシュボード用のウィジェットに加え、WUXモジュールに特化したウィジェットが用意されています:
上記の録画は単純な録画です。 録画が異なるフェーズに分割されるように設定されている場合は、WUXデータビューでも区別されます:
ウィジェットも同じだ:
最後に、ウェブからデータをキャプチャすることも可能である(webscrapping)。
手動実行(エージェントから、プラグインとして)
手動実行のために、Selenium 4 プラグインをホストする Pandora FMS サーバ内に、ソフトウェアエージェントを設定することができます。
これを行うために、Selenium 4 プラグインは、プラグインファイルへのパスと必要な設定ファイルを示すことができるように、エージェントプラグインとして 絶対パス を使って設定することができます。
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形式の実行データを生成するため、適用することが重要である。 ディスカバリーによるデフォルトの実行の場合、受信するデータ形式はJSONである:
Pandora FMS と同じサーバにインストールされていないソフトウェアエージェントからプラグインを実行することも可能です。 このためには、ソフトウェアエージェントをホストしているサーバーで、プラグインの.disk
パッケージをローカルにダウンロードし、そのフォーマットを.zip
に変更するために名前を変更し、バイナリおよび動作に必要な残りのファイルにアクセスするためにコンテンツを解凍する必要があります。
また、-x
パラメータで XML 形式のデータを送信し、-S
パラメータで XML を受信する Tentacle サーバの IP アドレスとポートを指定します。 実行は以下のようになります:
module_plugin /パス/への/バイナリ/ファイル/pandora_selenium -c /パス/への/構成/ファイル -s /パス/への/side/ファイル -t タスク名 -i エージェント間隔 -g ID_グループ -x -S IP_住所_Tentacle_サーバー:Tentacle_ポート
このタイプの実行で生成されるXMLは、それぞれ異なるエージェントに対応するため、プラグインが実行されているエージェント内でモジュールがホストされないことを覚えておくことが重要です。
最後に、この種の実行は、端末から手動で実行することも、ソフトウェア・エージェントから実行することも可能であるが、常にディスカバリー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> | オプション. プラグインによって生成されたエージェントを作成したいグループのID。 デフォルト: 0 . |
-x --xml_mode | オプション. 指定された場合、プラグインはSTDOUT出力を通してではなく、エージェントのためにXMLファイルを生成します。 |
-S <server:port> --server <server:port> | オプション. XML によるエージェントの生成 XMLファイルを送信するTentacleサーバのIPアドレスとポート。 |
-T <temp_folder> --temp <temp_folder> | オプション. XML によるエージェント生成用。 指定された Tentacle サーバに送信する前に生成される XML ファイルの一時ディレクトリ。 |
設定ファイル (--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 | プラグインをドライバで実行するか、Dockerで実行するかを示す。 |
browser | トランザクションに使用されるウェブブラウザを示す。 |
driver_url | トランザクションを実行する Selenium 4 サーバーへの URL を示します。 remote/driver モードのみ。 |
ssh_address | プラグインを実行するためにSSHで接続するサーバーのIPアドレスを示します。 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 モードのみ。 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 | オプション. 使用するGoogle Chromeのデータディレクトリ( data_dir )へのパスを指定します。 |
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 」に設定すると、取引中にアクセスしたURLの安全でないSSL証明書は、自動的に有効な証明書として受理されます。 |
monitor_stats | オプション. 値 1 で指定された場合、指定されたSIDEファイルのメインURLに接続統計モジュール㏄を生成する。 |
browser_width | オプション. トランザクションのウェブブラウザの幅をピクセル単位で示す。 デフォルト: 1920 . |
browser_height | オプション. トランザクションのブラウザの高さをピクセル単位で示す。 デフォルト: 1080 . |
global_timeout | オプション. プラグインが実行するタスクのグローバルタイムアウトを秒単位で示します。 また、Seleniumコマンドが実行される際のデフォルトのタイムアウトでもあります。 デフォルト: 5 . |
wait_between_commands | オプション. プラグインが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> | 以下のstore コマンドで、SIDEに格納された変数の中身をモジュールとして生成する。 例えば、こうだ: //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 |
ウェブ・スクラッピング
Pandora FMSでウェブスクラッピングを行うことは、複雑なトランザクションのパフォーマンスや結果を測定するために設計されたものですが、実現可能です。
ウェブスクレイピングとは、ウェブサイトから情報を自動で抽出する技術である。 手作業でデータを収集する代わりに、プログラムやスクリプトを使ってウェブページを閲覧し、関連する情報を特定してデータベースや構造化ファイルに保存する。
ここで説明されていることは、ディスカバリーモードのWUX(Selenium 4のみ)と、サーバー統合モードのWUX(バージョン777またはそれ以前)、Selenium 3の両方で使用できます。
最も簡単な方法は、Web ページ ID から直接値を取得する方法(Selenium コンソール拡張のインスペクタを使用し、それを Pandora FMS に渡す)か、正規表現を使って 生 で HTML データを処理する方法です。 どちらの場合も、Selenium トランザクションに追加のコマンドを導入する必要があります。
例えば、ウェブスクラッパーとして使用し、Amazon Store®の商品の評価数を読み取り、値のキャプチャを使用して変数に格納します:
これはREVIEW
という変数にTEXT
という型として格納される。 そして、その変数の値を表示するための追加コマンドecho
が作成される:
ここでは、Seleniumエクステンションによって生成された.side
コードの最後の2つのステップを見ることができる:
{ "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": "" }
この方法の欠点は、テキスト文字列として保存されることである。ID(この場合はspan)を使うことで、そのIDのタグの間はすべて保存されるからである。
より “洗練された “方法で値を取得したい場合は、正規表現を使用したparseメソッドを使用してテキストを処理する必要があります:
- この場合、Pandora FMS で数値が取得され、数値モジュールに変換されます。
.side
のソースコードとして、作成されたコマンドはこのようなコードに変換される。 二重引用符のような文字がどのようにエスケープ"
または\
文字になるかに注意することが重要である。- これを行うには、HTMLインスペクタを使って、値を取得したいコード領域を分析する必要がある:
タグの間にあるものを探す:
<span id="acrCustomerReviewText" class="a-size-base">''
そして
</span>
正規表現を適用すると次のようになる:
<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サーバーとSelenium 3
テクニカルアネックス「WUXサーバーとSelenium 3によるWUXモニタリング」に記載されているドキュメント。
/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
.