ブラウザーのドライバーをインストールする

自動化するブラウザを設定する。

Seleniumは、WebDriverを介して、Chrome/Chromium、Firefox、Internet Explorer、Edge、Opera、Safari などの市場にあるすべての主要なブラウザーをサポートします。 可能な場合、WebDriverは、ブラウザーに組み込まれている自動化のサポートを使用してブラウザーを動かします。

Internet Explorerを除くすべてのドライバーの実装は、ブラウザーベンダー自身によって提供されているため、 標準のSeleniumディストリビューションには含まれていません。 この章では、さまざまなブラウザを使い始めるための基本的な要件について説明します。

Read about more advanced options for starting a driver in our driver configuration documentation.

クイックリファレンス

ブラウザーサポートするOS維持管理機関ダウンロードイシュートラッカー
Chromium/ChromeWindows/macOS/LinuxGoogleDownloadsIssues
FirefoxWindows/macOS/LinuxMozillaDownloadsIssues
EdgeWindows/macOSMicrosoftDownloadsIssues
Internet ExplorerWindowsSelenium ProjectDownloadsIssues
SafarimacOS High Sierra and newerAppleBuilt inIssues

Note: The Opera driver does not support w3c syntax, so we recommend using chromedriver to work with Opera. See the code example for opening an Opera browser

ドライバーを使用する3つの方法

1. ドライバー管理ソフトウェア

ほとんどのマシンはブラウザを自動的に更新しますが、ドライバは更新しません。 ブラウザに適切なドライバを確実に入手するために、多くのサードパーティライブラリが役立ちます。

// Use WebDriver Manager: https://github.com/bonigarcia/webdrivermanager

// Import WebDriver Manager:
import io.github.bonigarcia.wdm.WebDriverManager;

// Call setup() method for the browser driver you want:
WebDriverManager.chromedriver().setup();

// Initialize your driver as you normally would:
ChromeDriver driver = new ChromeDriver();
# Use Webdriver Manager for Python: https://github.com/SergeyPirogov/webdriver_manager

# Import code:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

# Use the `install()` method to set `executabe_path` in a new `Service` instance:
service = Service(executable_path=ChromeDriverManager().install())

# Pass in the `Service` instance with the `service` keyword: 
driver = webdriver.Chrome(service=service)
// Use WebDriver Manager Package: https://github.com/rosolko/WebDriverManager.Net

// Import the dependencies:
using WebDriverManager;
using WebDriverManager.DriverConfigs.Impl;

// Use the `SetUpDriver()` which requires a config class:
new DriverManager().SetUpDriver(new ChromeConfig());

// Initialize your driver as you normally would:
var driver = new ChromeDriver()
# Use webdrivers gem: https://github.com/titusfortner/webdrivers

# Add gem to Gemfile:
gem 'webdrivers', '~> 5.0'

# Require webdrivers in your project:
require 'webdrivers'

# Initialize driver as you normally would:
driver = Selenium::WebDriver.for :chrome
// There is not a recommended driver manager for JavaScript at this time
// Use WebDriverManager: https://github.com/bonigarcia/webdrivermanager

// Import the library
import io.github.bonigarcia.wdm.WebDriverManager

// Call the setup method before initializing the driver as you normally would:
fun chrome(): WebDriver {
    WebDriverManager.chromedriver().setup()
    return ChromeDriver()
}

2. PATH 環境変数

このオプションでは、最初に手動でドライバーをダウンロードする必要があります (リンクについてはクイックリファレンスを参照してください)。

これは、コードを更新せずにドライバーの場所を変更するための柔軟なオプションであり、各マシンがドライバーを同じ場所に配置する必要なく、複数のマシンで機能します。

PATH にすでにリストされているディレクトリにドライバを配置するか、ディレクトリに配置して PATH に追加することができます。

  • すでに PATH にあるディレクトリを確認するには、コマンドプロンプト/ターミナルを開いて次のように入力します。
echo $PATH 
echo %PATH%

* ドライバを配置するディレクトリがまだPATHにない場合は、次のディレクトリを追加する必要があります。
export PATH=$PATH:/opt/WebDriver/bin >> ~/.profile
setx PATH "%PATH%;C:\WebDriver\bin"

* ドライバを起動することで、正しく追加されているかどうかをテストできます。
 chromedriver
  • If your PATH is configured correctly,
  • PATH が正しく構成されている場合、ドライバーの起動に関連する出力が表示されます。
Starting ChromeDriver 95.0.4638.54 (d31a821ec901f68d0d34ccdbaea45b4c86ce543e-refs/branch-heads/4638@{#871}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

Ctrl+C を押して、コマンドプロンプトの制御を取り戻すことができます。

3. ハードコードされた場所

上記のオプション2と同様に、ドライバーを手動でダウンロードする必要があります。 (リンクについては クイックリファレンス を参照してください)。 コードそのものに場所を指定することには、システム上の環境変数を把握する必要がないという利点がありますが、 コードの柔軟性が大幅に低下するという欠点があります。

System.setProperty("webdriver.chrome.driver","/opt/WebDriver/bin/chromedriver");
ChromeDriver driver = new ChromeDriver();
service = Service(executable_path="/opt/WebDriver/bin/chromedriver")
driver = webdriver.Chrome(service=service)
var driver = new ChromeDriver(@"C:\WebDriver\bin");
service = Selenium::WebDriver::Service.chrome(path: '/opt/WebDriver/bin/chromedriver')
driver = Selenium::WebDriver.for :chrome, service: service
const {Builder} = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const service = new chrome.ServiceBuilder('/opt/WebDriver/bin/chromedriver');
const driver = new Builder().forBrowser('chrome').setChromeService(service).build();
// Please raise a PR to add code sample

ブラウザの起動

Chromium/Chrome

デフォルトでは、Selenium4はChromev75以降と互換性があります。 Chromeのバージョンとchromedriverのバージョンはメジャーバージョンと一致する必要があることに注意してください。 該当するダウンロードリンクについては、クイックリファレンスを参照してください。

Chromeの起動方法の例は、前章、つまり詳しく説明したドライバーを使用する3つの方法に記載されています。

System.setProperty("webdriver.chrome.driver","/path/to/chromedriver");
ChromeDriver driver = new ChromeDriver();
import org.openqa.selenium.chrome.ChromeDriver

fun main(args: Array<String>) {
  System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver")
  val driver = ChromeDriver()
}

Edge

Microsoft Edgeは、サポートされている最も古いバージョンのv79を使用してChromiumで実装されています。 Chromeと同様に、Edgeのバージョンとedgedriverのバージョンはメジャーバージョンと一致する必要があります。 該当するダウンロードリンクについては、クイックリファレンスを参照してください。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;

WebDriver driver = new EdgeDriver();
from selenium.webdriver import Edge

driver = Edge()
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

IWebDriver driver = new EdgeDriver();
require "selenium-webdriver"

driver = Selenium::WebDriver.for :edge
const {Builder} = require('selenium-webdriver');

var driver = new Builder().forBrowser('edge').build();
import org.openqa.selenium.WebDriver
import org.openqa.selenium.Edge.EdgeDriver

val driver: WebDriver = EdgeDriver()

Firefox

Selenium4にはFirefox78以降が必要です。 常に最新バージョンのgeckodriverを使用することをお勧めします。 該当するダウンロードリンクについては、クイックリファレンスを参照してください。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

WebDriver driver = new FirefoxDriver();
  
from selenium.webdriver import Firefox

driver = Firefox()
  
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

IWebDriver driver = new FirefoxDriver();
  
require "selenium-webdriver"

driver = Selenium::WebDriver.for :firefox
  
const {Builder} = require('selenium-webdriver');

var driver = new Builder().forBrowser('firefox').build();
 
import org.openqa.selenium.WebDriver
import org.openqa.selenium.Firefox.FirefoxDriver

val driver: WebDriver = FirefoxDriver()
  

Internet Explorer

Seleniumプロジェクトは、 Microsoftがカレントバージョンとみなすもの と同じリリースをサポートすることを目的としています。 古いリリースは機能する可能性がありますが、サポートされません。 Internet Explorer 11は、2022年6月15日にWindows 10を含む特定のオペレーティングシステムのサポートを終了することに注意してください。Edgeには、引き続きサポートされるIE互換モードがあります。

IEドライバーは、Seleniumプロジェクトによって直接維持される唯一のドライバーです。 Internet Explorerの32ビットバージョンと64ビットバージョンの両方のバイナリを使用できますが、 64ビットドライバーにはいくつかの制限があります。 そのため、32ビットドライバを使用することをお勧めします。 Internet Explorerの設定はログインしたユーザーのアカウントに対して保存されるため、追加の設定が必要になることに注意してください。

Internet Explorerの使用に関する追加情報は、Selenium wikiにあり、 該当するダウンロードリンクのクイックリファレンスを参照してください。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

WebDriver driver = new InternetExplorerDriver();
  
from selenium.webdriver import Ie

driver = Ie()
  
using OpenQA.Selenium;
using OpenQA.Selenium.IE;

IWebDriver driver = new InternetExplorerDriver();
  
require "selenium-webdriver"

driver = Selenium::WebDriver.for :ie
  
const {Builder} = require('selenium-webdriver');

var driver = new Builder().forBrowser('internet explorer').build();
 
import org.openqa.selenium.WebDriver
import org.openqa.selenium.ie.InternetExplorerDriver

val driver: WebDriver = InternetExplorerDriver()
  

Opera

Operaの現在のリリースはChromiumエンジン上に構築されており、 WebDriverはクローズドソースの Opera Chromium Driver を介してサポートされるようになりました。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.opera.OperaDriver;

WebDriver driver = new OperaDriver();
  
from selenium.webdriver import Opera

driver = Opera()
  
using OpenQA.Selenium;
using OpenQA.Selenium.Opera;

IWebDriver driver = new OperaDriver();
  
# Not currently implemented
  
const {Builder} = require("selenium-webdriver");

var driver = new Builder().forBrowser('opera').build();
  
import org.openqa.selenium.WebDriver
import org.openqa.selenium.opera.OperaDriver

val driver: WebDriver = OperaDriver()
  

Safari

ChromiumおよびFirefoxドライバーとは異なり、safaridriverはオペレーティングシステムとともにインストールされます。 Safariで自動化を有効にするには、ターミナルから次のコマンドを実行します。

safaridriver --enable
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.safari.SafariDriver;

WebDriver driver = new SafariDriver();
  
from selenium.webdriver import Safari

driver = Safari()
  
using OpenQA.Selenium;
using OpenQA.Selenium.Safari;

IWebDriver driver = new SafariDriver();
  
require "selenium-webdriver"

driver = Selenium::WebDriver.for :safari
  
const {Builder} = require('selenium-webdriver');

var driver = new Builder().forBrowser('safari').build();
  
import org.openqa.selenium.WebDriver
import org.openqa.selenium.safari.SafariDriver

val driver: WebDriver = SafariDriver()
  

iOSでSafariを自動化することを検討している人は、Appiumプロジェクトを検討する必要があります。