9

分度器とゴーストドライバーの違いについて明確にしたいと思います。

  1. 分度器付き:

    • テスト用に Selenium Web サーバーを起動します。
    • 複数のブラウザのテスト。
    • テストを開始するたびに、ブラウザが開きます。
  2. ゴーストドライバーの場合:

    • Phantomjs Web サーバーを起動します。
    • 複数のブラウザを設定することもできます。
    • セレンとは別に実行することも、セレンと統合することもできます。

私の質問は、Selenium Webdriver、複数のブラウザー、および CI に適していなくても、PhantomJS Webdriver が単独で実行できることです。Selenium を実行し、ghostdriver を使用して Selenium を phantomjs と統合する必要があるのはなぜですか?

4

1 に答える 1

8

私はあなたの質問を完全に理解しているとは言えませんが、答えようと思います。WebDriver を使用すると、標準化されたJSON-over-HTTP ワイヤ プロトコルを介してブラウザを駆動できます。これは、特定のブラウザを駆動するためのワイヤ プロトコルを理解する「サーバー」コンポーネントが必要であることを意味します。主要なデスクトップ ブラウザー (Internet Explorer、Chrome、および Firefox) ごとに、WebDriver コードが通信するサーバー コンポーネント (それぞれ、IEDriverServer.exe、chromedriver.exe、または Firefox ブラウザー拡張機能) があります。PhantomJS は、WebDriver ワイヤ プロトコルを理解するサーバー コンポーネントも実装しているため、他のブラウザーで使用されるものと同じ高レベルの WebDriver コードを PhantomJS でも使用できます。Selenium サーバーは、ローカル マシン上のブラウザーを駆動する必要がないことに注意してください。

現在、使用されているプロトコルは単純に HTTP 経由で送信されるため、WebDriver は WebDriver コードを 1 台のマシンで実行しながら、まったく別のマシンにあるブラウザーを駆動することができます。そこで、Selenium サーバーの出番です。Selenium サーバーは、WebDriver JSON ワイヤ プロトコルを理解する HTTP サーバーを起動します。そのサーバーが WebDriver コマンドを受信すると、そのコマンドを別の「サーバー」コンポーネントに転送できます。このコンポーネントは、そのマシンで実行されている (スタンドアロンのリモート サーバーとして) か、Selenium サーバーの別のインスタンスを実行している別のマシンで実行されています (「グリッド内」)。 " 構成)。

あなたの質問に答えるために、はい、WebDriver コードは、Selenium サーバーを使用せずに PhantomJS に対して実行できます。同様に、Selenium サーバーを使用せずに、Internet Explorer、Firefox、Chrome、Safari、および一部のバージョンの Opera に対して実行できます。分度器についてまったく言及しなくても、これはすべて真実であることに注意してください。分度器はWebDriverJSに基づいているため、「サーバー」コンポーネントが実行されている限り、それが Selenium サーバー、chromedriver.exe、IEDriverServer.exe、PhantomJS のいずれであっても、ドライバーはそのブラウザーと通信して駆動できる必要があります。コードを見ると、WebDriverJS (ひいては分度器) は、Selenium サーバーを必要とせずに Chrome と PhantomJS に対して実行できるように見えますが、分度器による WebDriverJS のラッピングについて、権限を持って話すには十分ではありません。

于 2014-03-17T14:47:32.040 に答える