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
を指定する必要があるのはなぜですか?
私も同じ質問をしましたが、掘り下げた後、
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 から設立。
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 を参照してください
簡単な答えは、各ブラウザーには独自のWebDriver実装があり、Seleniumプロジェクトでは維持されないということです。したがって、Seleniumがブラウザー固有のドライバーと対話するには、ドライバーのフルパスを指定する必要があります。
なぜFirefoxではdriverpathを指定する必要がないのですか? Selenium 2.0では、Selenium RCはまだ存在し、firefoxをサポートしていました。 Selenium 3.0以降では、ブラウザ固有のドライバーの公式サポートはありません。したがって、すべてのブラウザーに対してSystem.setpropertyを使用してドライバーパスを指定する必要があります。