web-dev-qa-db-ja.com

Chrome And IE Firefoxブラウザではなくブラウザ

Chromeの場合、

public class Chrome {

  public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
        WebDriver driver = new ChromeDriver();              
        driver.get("http://www.google.com");

    }

}

firefoxの場合、

public class Firefox {

      public static void main(String[] args) {

            WebDriver driver = new FirefoxDriver();              
            driver.get("http://www.google.com");

        }

    }

ChromeおよびIEにsystem.setPropertyを指定する必要があるのはなぜですか?

8
SacTan

私も同じ質問をしましたが、掘り下げた後、

WebDriverは、ネイティブブラウザアプローチを使用します。 SeleniumはFirefox用の組み込みドライバーを提供していますが、他のブラウザー用ではありません。すべてのドライバー(Chromeドライバー、IEドライバーなど)は、各ブラウザーで使用される特別なJSエンジンに基づいて構築されます。

Selenium WebDriverは、ドライバサーバーが組み込まれているため、Mozilla Firefoxで非常にうまく機能します。ただし、Internet ExplorerとGoogle Chromeには同じことが当てはまりません。 Firefoxは最も伝統的なブラウザであるため、Selenium WebDriverはブラウザを起動する前に追加のユーティリティを設定する必要はありません。 Seleniumパッケージは、firefox.exeのデフォルトの場所を自動的に参照するため、ユーザーは他のプロパティを設定する必要はありません。

「ドライバーの実行可能ファイルへのパスは、Webドライバーによって設定する必要があります。すなわち。 「ドライバーシステムプロパティ」エラーまたはそれに相当するChrome相当、ブラウザーにドライバーサーバーをインストールする必要があることを意味します。ドライバーサーバーは、ブラウザーとSeleniumワイヤープロトコル間の呼び出しを管理します。

InternetExplorerDriverは、WebDriverのワイヤプロトコルを実装するスタンドアロンサーバーです

同様に、Google Chromeにはサーバーが内蔵されていないため、Seleniumコードをブラウザーに通信するためにChromeドライバーサーバーが必要です。 Chromeドライバーサーバー。

here から設立。

6
Sanjay Bhimani

FirefoxDriver、ChromeDriver、InternetExplorerDriverの実装は異なるため、オブジェクトをインスタンス化する方法も異なります。

Firefox Driverは、Firefoxプラグインを使用してFirefoxブラウザを制御します。使用されるFirefoxプロファイルは、マシンにインストールされているものから削除され、Selenium WebDriver.xpiのみが含まれます。

InternetExplorerDriverは、WebDriverのワイヤプロトコルを実装するスタンドアロンサーバーです。

ChromeDriverは、Chromiumプロジェクトiteslfによって維持/サポートされています。 WebDriverは、Chrome chromedriverバイナリ(chromiumプロジェクトのダウンロードページにあります)で動作します。chromedriverとchromeブラウザのバージョンの両方が必要です。 chromedriverは、WebDriverが自動的に検出するために、システムのパスのどこかに配置する必要があります。Chromeブラウザ自体は、デフォルトのインストールパスでchromedriverによって検出されます

詳細については、 Selenium documentation を参照してください

1
Amanpreet Kaur

簡単な答えは、各ブラウザーには独自のWebDriver実装があり、Seleniumプロジェクトでは維持されないということです。したがって、Seleniumがブラウザー固有のドライバーと対話するには、ドライバーのフルパスを指定する必要があります。

なぜFirefoxではdriverpathを指定する必要がないのですか? Selenium 2.0では、Selenium RCはまだ存在し、firefoxをサポートしていました。 Selenium 3.0以降では、ブラウザ固有のドライバーの公式サポートはありません。したがって、すべてのブラウザーに対してSystem.setpropertyを使用してドライバーパスを指定する必要があります。

0
Seetaram Hegde