Selenium 3 がやってくる
Selenium 3 がやってきます! 執筆時点では、「beta 4」が公式 3.0 リリース前の最後のベータ版になると考えています。この記事では、何が変更され、それがテストにどのような影響を与えるかについて説明します。
要約
- WebDriver ユーザーは、バグ修正と 2.x のドロップイン置換を見つけるだけでしょう。
- Selenium Grid ユーザーも、バグ修正と簡単なアップデートを見つけるでしょう。
- WebDriver API は現在、Selenium プロジェクトによって積極的にサポートされている唯一の API です。
- Selenium RC API は「レガシー」パッケージに移動されました。
- Selenium RC を動かす元のコードは WebDriver によってバックアップされたものに置き換えられ、これも「レガシー」パッケージに含まれています。
- タイミングのずれにより、Mozilla は Firefox に変更を加えました。つまり、Firefox 48 以降では、Selenium 2 または 3 を使用しているかどうかに関係なく、そのブラウザを使用するには geckodriver を使用する必要があります。
詳細
2011 年に Selenium 2.0 をリリースした際、新しい WebDriver API を導入し、すべての人にそれらへの移行を開始するよう勧めました。WebDriver API を使用している場合、Selenium 3.0 は簡単なドロップインアップグレードです。パブリック WebDriver API は一切変更しておらず、コードは基本的に最後の 2.x リリースと同じです。Selenium Grid を使用している場合も同様です。ほとんどの場合、新しい JAR をドロップインする(または maven 依存関係を 3.0.0 に更新する)だけで完了です。
Selenium 3 へのアップデートがそれほど重要でない場合、なぜこれを Selenium 3.0 と呼んだのでしょうか?この質問に答えるために、まず歴史を説明し、Selenium が内部でどのように動作するかについて少し説明する必要があります。Selenium の最初のバージョンは、「単なる」非常に複雑な Javascript フレームワークであり、ブラウザで実行され、Selenium IDE を使用している場合におなじみかもしれないテーブルベースのテストを解釈していました。これを「Selenium Core」と呼びます。この Javascript フレームワークは、Selenium RC のオリジナルの実装の基礎を形成しました(Selenium API の最も古いセットであり、すべてのメソッドと関数が「Selenium」インターフェースにあり、しばらくの間非推奨になっています)。時間の経過とともに、最新の Web テストのニーズはますます複雑かつ高度になり、Selenium Core は以前ほどこれらのニーズを満たすことができなくなりました。
Selenium 3.0 では、オリジナルの Selenium Core 実装を削除しています。古い RC インターフェースを使用している場合、WebDriver によってバックアップされた代替実装を提供します。これは、Selenium 2 のリリース以降、Selenium 2 の一部として利用可能になっているものと同じ「webdriver-backed selenium」です。基盤となるテクノロジーが Selenium Core から WebDriver に変更されたため、RC を使用した既存のテストで問題が発生する場所が見つかる場合があります。スイートの移行に関する当社の経験では、通常、最小限のエンジニアリング作業で修正できるシステム上の問題です(つまり、問題は通常、数か所に限定されており、これらは問題を回避するために書き換えることができます)。
また、オリジナルの Selenium RC API をメインダウンロードから削除しています。Java ユーザーで、既存のテストをサポートするためにそれらを使用する必要がある場合は、「org.seleniumhq.selenium:selenium-leg-rc:3.0.0」(またはそれ以降!)への依存関係が必要になります。絶対に必要でない限り、これを行わないことを強くお勧めします。
IDE からテーブル形式でエクスポートされたテストを実行するユーザーの場合、プロジェクトが使用できるようにした新しいテストランナーがプロジェクトのウェブサイトから ダウンロード できるようになりました。古いランナーと同じ引数を取り、テストの出力も同じになるように最善を尽くしました。
Selenium プロジェクトが Selenium 3.0 を出荷するのと同時に、Mozilla は Firefox の内部構造をより安定して安全にする方法で変更していますが、これによりコミュニティ提供の Firefox Driver が動作しなくなります。そのため、テストに Firefox を使用する場合は、geckodriver を使用する必要があります。これは、Edge 用の chromedriver および Microsoft WebDriver と同様の実行可能ファイルです。Selenium 2 を使用している場合でも、geckodriver を使い始める必要があります。変更は Selenium ではなくブラウザにあります。geckodriver は、進化し続ける W3C WebDriver 標準に基づいたアルファソフトウェアであることに注意してください。誰もが可能な限り最高のテストエクスペリエンスを提供するために全力で取り組んでいますが、Firefox を使用したテストに関しては、間違いなくいくつかの課題があります。
このリリースは、Selenium コミッターとコミュニティによる多くの努力の集大成です。このプロセスに参加してくれたすべての人々と、プロジェクトを今日の成功に導くために多大な貢献をしてくれた世界中の Selenium ユーザーに感謝します。