セレニウムとは?WebDriver、Grid、IDE、およびユースケース

セレニウムとは?WebDriver、Grid、IDE、およびユースケース

Scrapeless Scraping Browserは、ローカルブラウザホストを超えるクラウド実行を必要とするウェブ自動化およびデータワークフローのための管理されたブラウザインフラストラクチャを提供します。

要点

  • セレニウムは、ブラウザ自動化プロジェクトの総称です。 主な構成要素は、コードベースの制御のためのWebDriver、分散実行のためのGrid、および記録と再生のためのIDEです。
  • WebDriverは、コアプログラミングインターフェースです。 セレニウムの言語バインディングは、ブラウザベンダーの参加によって維持されるブラウザ固有の実装を介して標準化されたコマンドを送信します。
  • セレニウムは広範な互換性を重視しています。 そのエコシステムは主要なブラウザ、いくつかのプログラミング言語、リモート実行サービス、テストフレームワーク、大規模なエンタープライズスイートをカバーしています。
  • Gridは割り当てを解決しますが、テストデザインは解決しません。 セッションをマシン間で分散させることでカバレッジとキャパシティが増加しますが、待機時間、ロケータ、アイソレーション、アサーションは引き続きテストの質を決定します。
  • セレニウムはレガシーアプリケーションに制限されません。 クロスブラウザ標準、言語の選択、既存のインフラストラクチャ、リモートブラウザの相互運用性が決定を導くときに、依然として有用です。

セレニウムはプロジェクトのファミリーであり、1つの実行可能ファイルではありません。

セレニウムは、ウェブブラウザを自動化するためのツールとライブラリを結びつけます。WebDriverは最も多くの開発者が使用するコード対応のAPIです。セレニウムGridは、異なるマシンやプラットフォームのブラウザノードにセッションをルーティングします。セレニウムIDEは、拡張機能を通じてブラウザアクションを記録し再生し、学習や軽量なフローに役立ちます。言語バインディングはテストコードをWebDriverモデルに接続し、外部テストランナーはスイート構造、アサーション、レポーティング、アプリケーション固有のフィクスチャを提供します。

公式セレニウムプロジェクト概要 セレニウムを総称プロジェクトと説明し、WebDriver、IDE、Gridの役割を説明します。この分離はセレニウムを評価する際に重要です。チームはGridなしでローカルにWebDriverを使用したり、WebDriverセッションをクラウドプロバイダーに送信したり、複数のテストフレームワークでGridを使用したりできます。「セレニウムの使用」とは、したがって、言語バインディング、ブラウザドライバー、ランナー、セッションホスト、レポーティングパスが名前を挙げられるまで、完全なアーキテクチャについてはあまり言及しません。

WebDriverはテストコードをブラウザ実装に接続します。

セレニウムのテストは、Java、Python、JavaScript、Ruby、またはC#などの言語バインディングを呼び出します。バインディングは、要求された機能を持つWebDriverセッションを作成し、その後、ナビゲーション、要素の検索、入力、スクリプトの実行、ウィンドウ、クッキー、スクリーンショット、その他のブラウザ操作のコマンドを送信します。ドライバー実装はこれらのプロトコル操作をブラウザの動作に変換します。ローカル実行はテストプロセスの近くで開始し、リモート実行は同じセッションモデルをGridまたは別のWebDriverエンドポイントに送信します。

W3C WebDriver仕様 WebDriverをリモートブラウザ制御のためのプラットフォームおよび言語非依存のワイヤプロトコルとして定義します。基準に基づくコマンドは、ブラウザ実装とクライアントを相互運用可能にし、拡張機能はベンダー固有のニーズをカバーします。このプロトコルはその周囲のテストフレームワークを規定しません。アサーション、依存性注入、ページオブジェクト、データセットアップ、結果報告は、周囲の言語エコシステムまたはプロジェクトアーキテクチャから来ます。

  • バインディング。 言語固有のAPIは、プロジェクトコードをWebDriverセッションおよびコマンドメッセージに変換します。
  • ドライバー。 ブラウザ固有の実装は、コマンドを受け取り、対応するブラウザを制御します。
  • セッション。 機能は1つの自動化ライフサイクルのためにブラウザ、プラットフォーム、プロンプト、プロキシ、および拡張設定を交渉します。
  • 要素とアクション。 コマンドはDOM要素を見つけ、キーボード、ポインタ、ホイール、ナビゲーション、ウィンドウ、またはスクリプト操作を発信します。
  • リモートエンドポイント。 Gridまたはホスティングサービスは、要求されたセッションを利用可能なブラウザ環境に割り当てます。

Gridは環境間でブラウザセッションを分配します。

セレニウムGridはリモートWebDriverリクエストを受け入れ、要求された機能を満たすノードにそれらをマッチングします。これにより、1つのスイートがテストランナーにインストールされていないブラウザとオペレーティングシステムの組み合わせをカバーできるようになります。また、ノードのキャパシティとアプリケーションの同時テストを処理する能力に基づいて並行セッションを可能にします。Gridはブラウザの割り当てを集中化するのに役立ちますが、テストデータ、環境の安定性、シークレット、アーティファクト、ターゲットシステムの負荷はチームの責任です。

公式セレニウムGridドキュメント Gridが異なるマシンやプラットフォームでテストを実行し、トリガーがローカルエンドに残ることを説明します。便利なGrid設計は、すべてのセッションを使い捨て可能で観察可能なものとして扱います。ノードは制御されたブラウザバージョンを持ち、ログは割り当てられた環境を特定する必要があります。テストは以前のセッションによって残されたファイルや状態に依存しないようにする必要があります。リモート実行は隠れたカップリングを拡大します。なぜなら、順序とマシンの割り当ては予測可能性が低いためです。

セレニウムのコンポーネントは異なるステージに対応します。

各コンポーネントに1つの仕事があり、周囲のテストスタックが明示的に名前付けされると、セレニウムアーキテクチャはより明確になります。

コンポーネント主要な責任
セレニウムWebDriverブラウザセッションを制御するための言語バインディングと基準に基づくインターフェースを提供します。
ブラウザドライバー特定のブラウザのWebDriver操作を実装し、それらをそのブラウザに委任します。
セレニウムGrid要求された機能と一致する利用可能なブラウザノードにリモートセッションリクエストをルーティングします。
セレニウムIDE学習、プロトタイピング、選択されたワークフローのために拡張機能を通じてブラウザアクションを記録し再生します。
テストランナーテストを発見し、アサーションやフィクスチャを提供し、結果を報告し、通常は言語エコシステムによって供給されます。
ページまたはドメインレイヤーアプリケーション固有のロケーターや操作をカプセル化し、テストが生のコマンドではなくビジネスの振る舞いを表現できるようにします。

Seleniumが実用的な選択肢である場所

Seleniumは、互換性、言語統合、または既存のWebDriverエコシステムがオールインワンのテストランナーよりも重要な場合に最も強力です。

広範なエンタープライズスイート

長期間運用されるJava、Python、C#、Ruby、またはJavaScriptのテストシステムは、WebDriverを確立されたランナー、報告、依存関係注入、内部ライブラリと統合できます。

クロスブラウザ検証

標準ベースのセッションモデルは、主要なブラウザ実装およびブラウザとオペレーティングシステムの組み合わせ全体でリモート環境をサポートします。

分散実行

GridまたはホステッドWebDriverサービスは、テストプロセスが各ブラウザをローカルにホストすることを強制せずに、多くの独立したセッションを割り当てることができます。

標準志向のツール

自動化製品は、すべてのワークフローを1つのブラウザベンダーのデバッグインターフェースに直接結びつける代わりに、WebDriverプロトコルの周りに構築できます。

Seleniumは待機とツールに関する明示的な選択を必要とします

Seleniumは、1つの規定のテストアーキテクチャではなくブラウザ制御を提供します。チームはランナー、アサーションライブラリ、フィクスチャ、レポート、依存関係管理、および設計慣習を選択します。その柔軟性は多くのエコシステムをサポートしますが、決定の数を増やします。同期化も規律を必要とします:要素の存在は、可視性やインタラクション性を保証せず、ページロードイベントはシングルページアプリケーションがテストに必要な状態に達したことを意味しない場合があります。

公式のSelenium WebDriver入門ガイド Selenium設定に関与するブラウザ固有のドライバーと言語非依存インターフェースについて説明します。現在のSeleniumツールは、ドライバー設定の多くを管理できますが、リモートエンドポイント、ブラウザポリシー、コンテナイメージ、およびエンタープライズネットワークは環境を変更する可能性があります。セッションから返された実際の機能を記録し、要求されたブラウザラベルが完全な環境を証明することを仮定するのではなく、アプリケーションの結果を主張します。

Seleniumアーキテクチャレビュー

Seleniumを相互運用可能な部品のセットとして扱います。ブラウザカバレッジを拡大したり、リモートキャパシティを追加する前に、各境界をレビューしてください。

  1. 完全なスタックを命名します。 言語バインディング、テストランナー、アサーションライブラリ、ドライバー管理、ブラウザバージョン、Gridまたはリモートエンドポイント、およびアーティファクトシステムを記録します。これにより、曖昧なフレームワークの選択が運用可能な設計に変わります。
  2. 機能の所有権を定義します。 ブラウザ、プラットフォーム、プロキシ、ダウンロード、証明書、およびベンダー拡張機能の能力をバージョン管理された構成に保持します。環境のドリフトを診断する際に、要求された機能と返された機能を比較します。
  3. 条件ベースの待機を使用します。 次のステップで必要な特定の可視、エンベディッド、URL、フレーム、またはアプリケーション状態を待機します。固定した時計の遅延を主要な同期方法にしないでください。
  4. ページの振る舞いをカプセル化します。 ページオブジェクトやドメインサービスは、生のロケーターやWebDriverコマンドを記述するページの近くに保ちながら、有意義な操作と結果を公開すべきです。
  5. テストデータとセッションを分離します。 並列テストは、明示的にテストの主題でない限り、アカウント、可変レコード、ダウンロード、ブラウザプロファイルを共有すべきではありません。
  6. リモート割り当てを観察します。 セッション識別子、ノード環境、ブラウザバージョン、ログ、スクリーンショット、およびその他の関連アーティファクトをキャプチャして、リモートの失敗を再現できるようにします。
  7. 測定された需要からスケールします。 ブラウザのスタートアップ、テスト期間、ターゲットキャパシティ、および共有サービスの制限を測定した後にノードと並列ワーカーを追加します。より多くのセッションは、テスト対象のアプリケーションを過負荷にする可能性があります。
  8. プロトコルの進化を計画します。 WebDriverクラシックおよびWebDriver BiDiのサポートを、スイートが使用するブラウザとバインディングで追跡します。必要なモジュールがエンドツーエンドで実装されるときに新しいイベント駆動型機能を採用します。

ScrapelessがSeleniumワークフローの周りにどのように適するか

Scrapeless Scraping Browserは、自動化と動的なウェブデータタスクのための管理されたブラウザインフラです。Selenium中心の組織では、ブラウザホスティングおよびネットワークレイヤーの一部として評価し、プロジェクトに必要な正確なクライアントと操作に対して現在サポートされている接続表面を確認します。

1つのブラウザプロトコルのサポートがすべてのSeleniumコマンド、機能、またはアーティファクトの完全なサポートを意味するという仮定をしないでください。最初に制約のある互換性チェックを実行します。現在の Scrapeless Scraping Browser製品概要, Scrapeless Scraping Browserの入門ドキュメント, および Scrapelessの価格 オペレーティングモデルを選択する前に。

結論:Seleniumは相互運用可能な自動化エコシステムです。

SeleniumはWebDriver、Grid、IDE、言語バインディング、および大規模な周辺エコシステムを組み合わせています。WebDriverはコアブラウザ制御契約を提供し、Gridはセッションを分配し、プロジェクトの言語スタックがテストアーキテクチャの残りを供給します。このモジュラリティがSeleniumが多くの環境に適合する主な理由です。

基準に基づくクロスブラウザ制御、言語選択、既存の専門知識、またはリモートWebDriverインフラストラクチャが主要な要件である場合はSeleniumを選択してください。アプリケーションの状態に結びついた待機時間を保ち、セッションとテストデータを隔離し、完全な環境を観察可能にします。

ブラウザインフラストラクチャを見直す準備はできていますか?

Scrapelessアカウントを作成し、現在の自動化ワークフローで使用しているローカルまたはGridホスト環境と管理されたブラウザ実行を比較してください。

無料で始める →

FAQ

SeleniumはWebDriverと同じですか?

いいえ。Seleniumはアンブレラプロジェクトであり、WebDriverはその主要なコードベースのブラウザ制御コンポーネントおよび関連するW3Cプロトコルファミリーです。Seleniumには分散実行のためのGridや、記録と再生のワークフロー用のIDE、言語バインディング、およびプロジェクトインフラストラクチャも含まれています。

Seleniumにはテストランナーが含まれていますか?

Seleniumはブラウザ自動化APIを提供しますが、通常は選択した言語エコシステムからのランナーに依存します。例えば、Java、Python、JavaScript、またはC#テストフレームワークです。ランナーはWebDriverセッションに関する発見、アサーション、フィクスチャ、レポーティング、およびスイートライフサイクルを提供します。

Selenium Gridは何に使用されますか?

Selenium Gridは、リモートWebDriverセッション要求を要求された機能に一致するブラウザノードにルーティングします。これにより、チームは異なるマシン、ブラウザ、プラットフォームでの実行を助け、並行処理能力を向上させることができます。共有テストデータ、不安定な待機、弱いロケータ、または欠落したアサーションを修正することはできません。

Seleniumは主要なブラウザをサポートしていますか?

はい。Selenium WebDriverは、ブラウザ固有のドライバと基準に基づくプロトコルを通じて主要なブラウザ実装用に設計されています。プロジェクトで必要な正確なブラウザバージョン、オペレーティングシステム、ドライバまたは組み込みマネージャの動作、リモートサービスの機能を検証します。

Seleniumは自動テスト専用ですか?

テストが主な使用目的ですが、WebDriverは監視、ブラウザツール、および許可された自動化タスクもサポートできます。公共データの収集には、レンダリングまたはインタラクションが必要な場合にのみブラウザを選択し、アクセス範囲、トラフィック、資格情報、およびデータ保持を明示的に制御してください。

参考文献