SeleniumはWebDriverを経由して、Chrom(ium)、Firefox、Internet Explorer、Opera、Safariなど、市場のすべての主要なブラウザーをサポートします。 すべてのブラウザーがリモートコントロールを公式にサポートしているわけではありませんが、可能であれば、ブラウザーの自動化のビルトインサポートを使用して、WebDriverはブラウザーを動かします。
WebDriverの目的は、できるだけブラウザーに近づけて実際のユーザーのインタラクションを模倣することです。 これは、ブラウザーによって異なる水準となる可能性があります。 さまざまなドライバーの特異性の詳細については、 ドライバーの特異性 をご覧ください。
ブラウザーを制御するためすべてのドライバーが単一のユーザー向けインターフェイスを共有している場合でも、 ブラウザーのセッションを設定する方法が少し異なります。 ドライバーの実装の多くはサードパーティによって提供されているため、 標準のSeleniumディストリビューションには含まれていません。
ドライバーのインスタンス化、プロファイル管理、およびブラウザー固有のさまざまな設定は、ブラウザーに応じて異なる要件を持つパラメーターの例です。 このセクションでは、さまざまなブラウザーを使い始めるための基本的な要件について説明します。
ほとんどのドライバーでは、ブラウザーと通信するためにSeleniumの追加の実行可能ファイルが必要です。 WebDriverを起動する前に実行可能ファイルの場所を手動で指定できますが、これによりテストの移植性が低下します。 実行可能ファイルはすべてのマシンの同じ場所にあるか、テストコードリポジトリに含まれている必要があるためです。
WebDriverのバイナリを含むフォルダーをシステムのパスに追加することで、Seleniumはドライバーの正確な場所を見つけるためにテストコードを要求することなく、追加のバイナリを見つけることができます。
setx /m path "%path%;C:\WebDriver\bin\"
export PATH=$PATH:/opt/WebDriver/bin >> ~/.profile
これで、変更をテストする準備ができました。 開いているすべてのコマンドプロンプトを閉じて、新しいプロンプトを開きます。 前の手順で作成したフォルダー内のバイナリのいずれかの名前を入力します。例:
chromedriver
PATH
が正しく設定されている場合、ドライバーの起動に関連する出力が表示されます。
Starting ChromeDriver 2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1) on port 9515
Only local connections are allowed.
Ctrl + C を押すと、コマンドプロンプトの制御を取り戻すことができます。
ブラウザー | サポートOS | メンテナ | ダウンロード | イシュートラッカー |
---|---|---|---|---|
Chromium/Chrome | Windows/macOS/Linux | ダウンロード | イシュートラッカー | |
Firefox | Windows/macOS/Linux | Mozilla | ダウンロード | イシュートラッカー |
Edge | Windows 10 | Microsoft | ダウンロード | イシュートラッカー |
Internet Explorer | Windows | Selenium Project | ダウンロード | イシュートラッカー |
Safari | macOS El Capitan and newer | Apple | ビルトイン | イシュートラッカー |
Opera | Windows/macOS/Linux | Opera | ダウンロード | イシュートラッカー |
Chrome または Chromium を動かす場合、chromedriver をダウンロードして、システムパスのフォルダに置いてください。
LinuxまたはmacOSでは、これは PATH
環境変数を変更することを意味します。
次のコマンドを実行すると、コロンで区切られたディレクトリがシステムのパスを構成していることがわかります。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
まだパスを追加していない場合にchromedriverをパスに含めるには、chromedriverバイナリの親ディレクトリを必ず含めてください。
次の行は、 PATH
環境変数の現在のコンテンツに加えて、コロンの後に追加のパスを設定します。
$ export PATH="$PATH:/path/to/chromedriver"
パス上でchromedriverが使用可能な場合、任意のディレクトリから_chromedriver_実行可能ファイルを実行できるはずです。
Chrome / Chromiumセッションをインスタンス化するには、次のとおり。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
WebDriver driver = new ChromeDriver();
#Simple assignment
from selenium.webdriver import Chrome
driver = Chrome()
#Or use the context manager
from selenium.webdriver import Chrome
with Chrome() as driver:
#your code inside this indent
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
IWebDriver driver = new ChromeDriver();
require "selenium-webdriver"
driver = Selenium::WebDriver.for :chrome
const {Builder} = require('selenium-webdriver');
(async function myFunction() {
let driver = await new Builder().forBrowser('chrome').build();
//your code inside this block
})();
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
val driver: WebDriver = ChromeDriver()
chromedriver実行可能ファイルへのパスを設定する必要があることに注意してください。 これは、次の行を使えば可能です。
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
Chrome(executable_path='/path/to/chromedriver')
new ChromeDriver("/path/to/chromedriver");
Selenium::WebDriver::Chrome.driver_path = "/path/to/chromedriver"
chrome.setDefaultService(new chrome.ServiceBuilder('path/to/chromedriver').build());
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver")
chromedriverは、Chromeの内部自動化プロキシインターフェイスを公開することにより、ブラウザーに処理を指示するWebDriverリモートサーバーとして実装されています。
Selenium 3以降、MozillaはFirefoxドライバーの実装である geckodriver を引き継ぎました。 Firefox用の新しいドライバーはgeckodriverと呼ばれ、Firefox 48以降で動作します。 Firefox WebDriverは開発中であるため、Firefoxバージョンが新しいほどサポートが向上します。
geckodriverはFirefoxを起動する新しいデフォルトの方法であるため、 Selenium 2と同じ方法でFirefoxをインスタンス化できます。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
WebDriver driver = new FirefoxDriver();
#Simple assignment
from selenium.webdriver import Firefox
driver = Firefox()
#Or use the context manager
from selenium.webdriver import Firefox
with Firefox() as driver:
#your code inside this indent
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
IWebDriver driver = new FirefoxDriver();
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
const {Builder} = require('selenium-webdriver');
(async function myFunction() {
let driver = await new Builder().forBrowser('firefox').build();
//your code inside this block
})();
import org.openqa.selenium.WebDriver
import org.openqa.selenium.Firefox.FirefoxDriver
val driver: WebDriver = FirefoxDriver()
PATHを使用してgeckodriverの場所を設定しない場合は、 geckodriverバイナリの場所をプログラムで設定します。
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");
Firefox(executable_path='/path/to/geckodriver')
new FirefoxDriver("/path/to/geckodriver");
Selenium::WebDriver::Firefox.driver_path = "/path/to/geckodriver"
const firefox = require('selenium-webdriver/firefox');
const options = new firefox.Options();
options.setBinary("/path/to/geckodriver");
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver")
実行時にプロパティを設定することも可能です。
mvn test -Dwebdriver.gecko.driver=/path/to/geckodriver
Firefox 47.0.1 または 45 ESR をインストール、および marionette の必要な機能を false として指定することにより、多くの機能が完了した古いFirefoxドライバーに戻すことが可能です。 以降のFirefoxのリリースには互換性がありません。
Edgeは、Microsoftの最新のブラウザーで、Windows 10およびServer 2016に含まれています。 Edgeの更新は、主要なWindowsUpdateプログラムにバンドルされているため、現在インストールされているWindowsビルドのビルド番号に一致するバイナリをダウンロードする必要があります。 Edge Developer サイトには、利用可能なすべてのバイナリへのリンクが含まれています。 EdgeDriverの実装に対するバグは、Microsoftに起票する可能性があります。 Edgeに対してテストを実行したいがWindows 10を実行していない場合、MicrosoftはEdge Edge Developer サイトでテスター向けに無料のVMを提供しています。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;
WebDriver driver = new EdgeDriver();
#Simple assignment
from selenium.webdriver import Edge
driver = Edge()
#Or use the context manager
from selenium.webdriver import Edge
with Edge() as driver:
#your code inside this indent
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
IWebDriver driver = new EdgeDriver();
require "selenium-webdriver"
driver = Selenium::WebDriver.for :edge
const {Builder} = require('selenium-webdriver');
(async function myFunction() {
let driver = await new Builder().forBrowser('MicrosoftEdge').build();
//your code inside this block
})();
import org.openqa.selenium.WebDriver
import org.openqa.selenium.edge.EdgeDriver
val driver: WebDriver = EdgeDriver()
Edgeドライバーがパスに存在しない場合、次の行を使用してパスを設定できます。
System.setProperty("webdriver.edge.driver", "C:/path/to/MicrosoftWebDriver.exe");
Edge(executable_path='/path/to/MicrosoftWebDriver.exe')
new EdgeDriver("/path/to/MicrosoftWebDriver.exe");
Selenium::WebDriver::Edge.driver_path = "C:/path/to/MicrosoftWebDriver.exe"
const {Builder} = require("selenium-webdriver");
const edge = require('selenium-webdriver/edge');
let service = new edge.ServiceBuilder("/path/to/msedgedriver.exe");
(async function test() {
let driver = await new Builder()
.setEdgeService(service)
.forBrowser('MicrosoftEdge')
.build();
})();
System.setProperty("webdriver.edge.driver", "C:/path/to/MicrosoftWebDriver.exe")
Internet Explorerは、Windows 10まではMicrosoftのデフォルトのブラウザーでしたが、Windows 10にはまだ含まれています。 Internet ExplorerドライバーはSeleniumプロジェクトは、同じリリースのMicrosoftの現在の考慮をサポートすることを目指す唯一のドライバーです。 古いリリースは動作する可能性がありますが、サポートされません。
SeleniumプロジェクトはInternet Explorerの32ビット版と64ビット版の両方のバイナリを提供しますが、64ビットドライバーを使用するInternet Explorer 10および11にはいくつかの制限がありますが、32ビットドライバーの使うことでうまく機能します。 ログインしたユーザーのアカウントに対してInternet Explorerの設定が保存されるため、追加の設定が必要になることに注意してください。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
WebDriver driver = new InternetExplorerDriver();
#Simple assignment
from selenium.webdriver import Ie
driver = Ie()
#Or use the context manager
from selenium.webdriver import Ie
with Ie() as driver:
#your code inside this indent
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
IWebDriver driver = new InternetExplorerDriver();
require "selenium-webdriver"
driver = Selenium::WebDriver.for :internet_explorer
const {Builder} = require('selenium-webdriver');
(async function myFunction() {
let driver = await new Builder().forBrowser('internet explorer').build();
//your code inside this block
})();
import org.openqa.selenium.WebDriver
import org.openqa.selenium.ie.InternetExplorerDriver
val driver: WebDriver = InternetExplorerDriver()
Internet Explorerドライバーがパスに存在しない場合、次の行を使用してパスを設定できます。
System.setProperty("webdriver.ie.driver", "C:/path/to/IEDriver.exe");
Ie(executable_path='/path/to/IEDriverServer.exe')
new InternetExplorerDriver("C:/path/to/IEDriver.exe");
Selenium::WebDriver::IE.driver_path = "C:/path/to/IEDriver.exe"
const {Builder} = require("selenium-webdriver");
const ie = require('selenium-webdriver/ie');
let service = new ie.ServiceBuilder("/path/to/IEDriverServer.exe");
(async function test() {
let driver = await new Builder()
.setIeService(service)
.forBrowser('internet explorer')
.build();
})();
System.setProperty("webdriver.ie.driver", "C:/path/to/IEDriver.exe")
Microsoftは、Internet Explorer 11 on Windows 7 & 8.1上のInternet Explorer 11用のWebDriverバイナリも提供しています。 2014年以降更新されておらず、W3仕様のドラフトバージョンに基づいています。 ジム エバンスは、Microsoftの実装に関する優れた記事を持っています。
Operaの現在のリリースはChromiumエンジンの上に構築されており、WebDriverはPATHに追加したりシステムプロパティとして追加したりできるクローズドソースのOpera Chromium Driverを介してサポートされるようになりました。
ドライバーセッションのインスタンス化は、FirefoxとChromiumに似ています。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.opera.OperaDriver;
WebDriver driver = new OperaDriver();
#Simple assignment
from selenium.webdriver import Opera
driver = Opera()
#Or use the context manager
from selenium.webdriver import Opera
with Opera() as driver:
#your code inside this indent
using OpenQA.Selenium;
using OpenQA.Selenium.Opera;
IWebDriver driver = new OperaDriver();
require "selenium-webdriver"
driver = Selenium::WebDriver.for :opera
const {Builder} = require("selenium-webdriver");
const opera = require('selenium-webdriver/opera');
(async function test() {
let driver = await new Builder()
.forBrowser('opera')
.build();
})();
import org.openqa.selenium.WebDriver
import org.openqa.selenium.opera.OperaDriver
val driver: WebDriver = OperaDriver()
High Sierra 以降 :
safaridriver --enable
El Capitan と Sierra :
/usr/bin/safaridriver -p 1337</
その後、次を使用してドライバーセッションを開始できます。
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.safari.SafariDriver;
WebDriver driver = new SafariDriver();
#Simple assignment
from selenium.webdriver import Safari
driver = Safari()
#Or use the context manager
from selenium.webdriver import Safari
with Safari() as driver:
#your code inside this indent
using OpenQA.Selenium;
using OpenQA.Selenium.Safari;
IWebDriver driver = new SafariDriver();
require "selenium-webdriver"
driver = Selenium::WebDriver.for :safari
const {Builder} = require('selenium-webdriver');
(async function myFunction() {
let driver = await new Builder().forBrowser('safari').build();
//your code inside this block
})();
import org.openqa.selenium.WebDriver
import org.openqa.selenium.safari.SafariDriver
val driver: WebDriver = SafariDriver()
iOSでSafariを自動化する場合は、Appium projectをご覧ください。 Safariは以前はWindowsで利用可能でしたが、Appleは長い間サポートを終了しており、テストプラットフォームの選択肢としては不適切です。
HtmlUnitは “Javaプログラム用のGUIレスブラウザー” です。 HTMLドキュメントをモデル化し、ページの呼び出し、フォームへの入力、リンクのクリックなどを可能にするAPIを提供します。 JavaScriptをサポートしており、AJAXライブラリを使用して、使用する設定に応じてChrome、Firefox、またはInternet Explorerをシミュレートできます。 新しい場所に移動しました。 ソースはsvnで管理されています。
PhantomJSは、Google ChromeまたはSafariで使用されているバージョンよりもはるかに古いバージョンですが、Webkitベースのヘッドレスブラウザーです。 歴史的に人気のある選択肢でしたが、今ではPhantomJSを避けるのが賢明です。 プロジェクトは8月5日以降メンテナンスされていないため、Webの変更は継続されますが、PhantomJSは更新されません。これは、GoogleがChromeをヘッドレスで実行する機能を発表した後のことで、MozillaのFirefoxでも提供されています。