Selenium 2.0 バックエンド (Se2 Firefox 経由で IDE テストスイートを実行するため)

GSoC 2010 は素晴らしい冒険です。私は Raynatou と申します。ブルキナファソ出身で、SERLI でインターンシップをしています。

GSoC 2010 は素晴らしい冒険です。

私は Raynatou と申します。ブルキナファソ出身で、SERLI でインターンシップをしています。この会社のすべてのインターンと同様に、私のインターンシップのテーマは、Selenium IDE のバックエンドとしての WebDriver の統合のような高度なトピックに焦点を当てています。Selenium IDE は現在、ウェブページと対話するために Selenium Core 上に構築されています。Selenium Core には、ネイティブイベントを発火できないなど、いくつかの大きな制限があります。これらの制限を回避し、より堅牢なテストを作成するために、Selenium Core の代わりに WebDriver を使用するように Selenium IDE を調査しています。

私の指導者は、SauceLabs の Eric Allen (私の主任指導者) と、SERLI の Jérémy Hérault (2番目ですが劣らず重要です 😉) です。

Eric は今年の初めにこの統合のほとんどをすでに完了しています。彼の仕事の目標は、Selenium IDE と Selenium 2.0 Firefox ドライバーで何ができるかを主に示すことです。これは、Firefox WebDriver 拡張機能と Selenium IDE 間の非同期通信に基づいています。Se-IDE は、WebDriver が現在のコマンドが成功 (または失敗) したことを Selenium IDE に通知するのを待って、現在のテストケースの次のコマンドを呼び出します (コールバック関数を使用)。私のミッションの目標は、この統合を完了することです。しかし、Eric はクレイジーな男であり、彼はそれを迅速に実行し、私たち二人でこのマージを行う別の方法を考えました。

私たちの新しい考え方は、両者間の同期通信に基づいています。これを行うために、FirefoxDriver インスタンスを取得し、そのメソッドを呼び出すことによって、通常のオブジェクトのように操作します。しかし、FirefoxDriver の動作は、私が考えていたほど単純ではありません。JavaScript は強力な言語であるため (はい、それはあなたを震え上がらせる可能性があります)、いくつかのオブジェクト (Response オブジェクトなど) を置き換え、プロキシ (および少しの IoC のようなコード) を使用して、私の生活と行うコードを簡素化する必要がありました。私の作業は GitHub で確認し、フォローできます。

現在、Selenium API コマンドの 95% 以上が、Selenium IDE のバックエンドとして WebDriver で使用できると考えています。プロセスは基本的に、seleniumemulation パッケージを調べて、すべての Java クラスを WebDriver クラスの JavaScript メソッドに移植することでした。

現在、私は自分が行った 2.0 の作業をすべてカバーするために単体テストに取り組んでいます。Selenium Core テストをすべて IDE を介して実行することに成功しました。コードを最適化し、私の作業の理解を深めるためにより多くのコメントを追加するために、いくつかのリファクタリングを行う必要があります。ほぼ完了しました。

私がやっていることを楽しんでいただければ幸いです。そして、この作業が Selenium 2 の波に含まれることを願っています (私と私の指導者)。

最終更新日: 2021年8月7日: ディレクトリ名を変更 (e9895f27c26)