WebDriver を使用して Microsoft Edge を自動化する
WebDriver を使用すると、ユーザーの操作をシミュレートすることで Microsoft Edge を自動化できます。 WebDriver を使用するテストには、ブラウザーで実行される JavaScript 単体テストに比べていくつかの利点があります。
WebDriver は、ブラウザで実行されている JavaScript では利用できない機能や情報にアクセスします。
WebDriver は、JavaScript 単体テストよりもユーザー イベントまたは OS レベルのイベントをより正確にシミュレートします。
WebDriver は、1 回のテスト セッションで、複数のウィンドウ、タブ、Web ページを管理します。
WebDriver は、特定のコンピューターで Microsoft Edge の複数のセッションを実行します。
WebDriver と他のソフトウェアの関係
WebDriver を使用して Microsoft Edge を自動化し、ユーザーの操作をシミュレートするには、次の 3 つのコンポーネントが必要です。
- Microsoft Edge の詳細をご覧ください。
- Microsoft Edge WebDriver。
- WebDriver テスト フレームワーク。
これらのコンポーネント間の機能的な関係は次のとおりです。
テクノロジ | ロール |
---|---|
WebDriver | プラットフォームおよび言語に依存しないワイヤー プロトコルの W3C 標準。 このプロトコルにより、アウトプロセス プログラムは Web ブラウザーの動作をリモートで指示できます。 |
Microsoft Edge WebDriver | Microsoft Edge 専用の WebDriver プロトコルの Microsoft による実装。 テストの作成者は、Microsoft Edge Web ドライバーが受け取る WebDriver コマンドを使用するテストを書き込みます。 Edge Web ドライバーは、そのコマンドをブラウザーに伝達する責任があります。 |
WebDriver テスト フレームワーク | テストの作成者は、テスト フレームワークを使用して、エンドツーエンドのテストを書き込み、ブラウザーを自動化します。 Edge WebDriver に送信されるコマンドにコードを変換する言語固有のインターフェイスを提供します。 WebDriver テスト フレームワークは、すべての主要なプラットフォームと言語に対応しています。 そのようなフレームワークの 1 つが Selenium です。 |
Internet Explorer ドライバー | InternetExplorer 専用の WebDriver プロトコルのオープンソース実装。 Internet Explorer モードのレガシ エンドツーエンド テストを実行するには、Internet Explorer ドライバーを使用することをお勧めします。 |
Microsoft WebDriver (レガシ) | 以前の Microsoft Edge 用のブラウザー固有のドライバー (EdgeHTML)。これは Microsoft Edge Legacy とも呼ばれます。 |
次のセクションでは、Microsoft Edge の WebDriver の使用を開始する方法について説明します。
Microsoft Edge WebDriver をダウンロードする
自動テストの作成を開始するには、次のように、インストールする Edge WebDriver のバージョンがブラウザーのバージョンと一致していることを確認してください。
edge://settings/help
に移動して Microsoft Edge のバージョンをメモします。Microsoft Edge WebDriver に移動します。
ページの [最新バージョンの取得] セクションで、Microsoft Edgeのバージョン番号と一致するプラットフォームをチャネルで選択します。
ダウンロードが完了したら、
msedgedriver
実行可能ファイルを希望の場所に解凍します。 実行可能ファイルが配置されているフォルダーをPATH
環境変数に追加します。
WebDriver テスト フレームワークを選択する
Microsoft Edge WebDriver をダウンロードした後、ダウンロードする必要がある最後のコンポーネントは WebDriver テスト フレームワークです。 テストの作成者は、WebDriver テスト フレームワークを使用して、エンドツーエンドのテストを書き込み、ブラウザーを自動化します。 WebDriver テスト フレームワークは、コードを Edge WebDriver が Microsoft Edge で実行するコマンドに変換する言語固有のインターフェイスを提供します。 WebDriver テスト フレームワークは、Python、Java、C#、Ruby、JavaScript など、すべての主要なプラットフォームと言語に対して存在します。
この記事では、Selenium フレームワークの使用方法について説明しますが、WebDriver をサポートする任意のライブラリ、フレームワーク、およびプログラミング言語を使用できます。 Selenium 以外の WebDriver テスト フレームワークを使用して同じタスクを実行するには、選択したフレームワークの公式ドキュメントを参照してください。
Selenium 4 の使用
Selenium WebDriver テスト フレームワークは、任意のプラットフォームで使用でき、Java、Python、C#、Ruby、および JavaScript で使用できます。 注: Selenium 4 テストを実行するには、Python 3 が必要です。 (Python 2.7 はサポートされていません)。
WebDriver を使用して Microsoft Edge を自動化するには、Selenium を使用する場合、Microsoft Edge (Chromium) のサポートが組み込まれている Selenium 4 を使用する必要があります。
Selenium 4 をインストールするには、「Selenium ライブラリをインストールする」を参照してください。 必要な場合、nuget パッケージ ページは Selenium.WebDriver です。
Selenium 3 からのアップグレード
WebDriver を使用して Microsoft Edge を自動化するには、Selenium を使用している場合は、Selenium 4 を使用していることを確認してください。 Selenium 3 はサポートされなくなりました。
既存の Selenium 3 テストを Selenium 4 にアップグレードする必要があります。 Selenium 4 へのアップグレードの詳細については、「Selenium 4 へのアップグレード」を参照してください。
Selenium Tools for Microsoft Edge を使用してMicrosoft Edge (Chromium) のサポートを Selenium 3 ブラウザー テストに追加する場合は、次のようにテストを更新します。
プロジェクトから [Microsoft Edge 用の Selenium ツール]を削除します。 Selenium 4 には既に Microsoft Edge (Chromium) のサポートが組み込まれているため、Selenium 4 で Microsoft Edge 用の Selenium ツールを使用する必要はありません。
代わりに Selenium 4 が提供する組み込みの
EdgeDriver
および関連するクラスを使用するようにテストを更新します。EdgeOptions.UseChromium
プロパティのすべての使用法を削除します。 Selenium 4 ではMicrosoft Edge (Chromium) のみがサポートされているため、このプロパティは Selenium 4 に存在しなくなりました。
WebDriver を使用して Microsoft Edge を自動化する
WebDriver を使用してブラウザーを自動化するには、まず WebDriver テスト フレームワークを使用して WebDriver セッションを開始する必要があります。 セッションは、WebDriver コマンドを使用して制御されるブラウザーの 1 つの実行中のインスタンスです。
WebDriver セッションを開始して、新しいブラウザー インスタンスを起動します。 WebDriver セッションを閉じるまで、起動されたブラウザー インスタンスは開いたままです。
次のセクションでは、Selenium 4 を使用して Microsoft Edge で WebDriver セッションを開始する方法について説明します。
注
この記事では、Selenium フレームワークの使用方法について説明しますが、WebDriver をサポートする任意のライブラリ、フレームワーク、およびプログラミング言語を使用できます。 別のフレームワークを使用して同じタスクを実行するには、選択したフレームワークのドキュメントを参照してください。
Microsoft Edge を自動化する
Selenium は、EdgeDriver
クラスを使用して Microsoft Edge セッションを管理します。 次のコードは:
- Microsoft Edge セッションを開始します。
- Bing に移動するように Microsoft Edge に指示します。
- "WebDriver" を検索します。
- 数秒間スリープ状態になるため、結果を確認できます。
WebDriver で Microsoft Edge の自動化を開始するには、以下の目的の言語のコード スニペットをコピーして貼り付けます:
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using System.Threading;
namespace EdgeDriverSample
{
class Program
{
static void Main(string[] args)
{
var driver = new EdgeDriver();
try
{
driver.Url = "https://bing.com";
var element = driver.FindElement(By.Id("sb_form_q"));
element.SendKeys("WebDriver");
element.Submit();
Thread.Sleep(5000);
}
finally
{
driver.Quit();
}
}
}
}
Edge WebDriver サービスの管理と構成
新しい EdgeDriver
オブジェクトを作成して Microsoft Edge セッションを開始すると、Selenium は EdgeDriver
オブジェクトが通信する新しい Edge Web Driver プロセスを起動します。 EdgeDriver
オブジェクトの Quit
メソッドを呼び出すと、Edge WebDriver プロセスが閉じられます。 多くのテストがある場合、各 EdgeDriver
オブジェクトに独自のドライバープロセスを管理させるのは非効率的です。これは、各テストが新しいドライバー プロセスの起動を待機する必要があるためです。 代わりに、単一の Edge WebDriver プロセスを作成し、それを複数のテストに再利用できます。
Selenium は EdgeDriverService
クラスを使用して Edge WebDriver プロセスを管理します。 テストを実行する前に EdgeDriverService
を一度作成し、新しい EdgeDriver
オブジェクトを作成するときにこの EdgeDriverService
オブジェクトを EdgeDriver
コンストラクターに渡すことができます。 EdgeDriverService
を EdgeDriver
コンストラクターに渡すと、EdgeDriver
オブジェクトは新しいものを作成する代わりにこの EdgeDriverService
を使用します。
以下に示すように、EdgeDriverService
を使用して Edge WebDriver プロセスのコマンドライン オプションを構成することもできます。
次のスニペットは、新しい EdgeDriverService
を作成し、詳細なログ出力を有効にします。
var service = EdgeDriverService.CreateDefaultService();
service.UseVerboseLogging = true;
var driver = new EdgeDriver(service);
Microsoft Edge オプションを構成する
EdgeOptions
オブジェクトを EdgeDriver
コンストラクターに渡して、Microsoft Edge ブラウザー プロセスの追加オプションを構成できます。 次のセクションでは、いくつかの一般的なシナリオで EdgeOptions
を使用する方法を示します。 サポートされているオプションの完全なリストについては、「 機能と EdgeOptions」 を参照してください。
特定のブラウザー バイナリを選択する
特定の Microsoft Edge バイナリを使用して WebDriver セッションを開始できます。 たとえば、Microsoft Edge ベータ版、Dev、Canary などの Microsoft Edge プレビュー チャネルを使用してテストを実行できます。
var options = new EdgeOptions();
options.BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge Beta\Application\msedge.exe";
var driver = new EdgeDriver(options);
追加のコマンド ライン引数を渡す
EdgeOptions
を使用して、セッションの作成時に Microsoft Edge ブラウザー プロセスに渡されるコマンドライン引数を構成できます。 たとえば、ヘッドレス モードで実行するようにブラウザを設定できます。
var options = new EdgeOptions();
options.AddArgument("headless");
var driver = new EdgeDriver(options);
その他の WebDriver インストール オプション
Docker
Docker を使用する場合は、次のコマンドを実行して、Microsoft Edge と EdgeWebDriver が事前にインストールされている構成済みのイメージをダウンロードします。
docker run -d -p 9515:9515 mcr.microsoft.com/msedge/msedgedriver
詳細については、「DockerHub の msedgedriver コンテナ」を参照してください。
Application Guard
Microsoft Defender Application Guard を使用する信頼済みサイトは、Edge WebDriver を使用して自動化できます。 Microsoft Defender Application Guard は Application Guard とも呼ばれます。
Application Guard を使用する非信頼サイトは、Edge WebDriver を使用して自動化または操作することはできません。 Application Guard は、非信頼サイトをコンテナーで起動します。このコンテナーは、Edge WebDriver がサイトと通信するために必要なリモート デバッグ ポートを公開しません。
エンタープライズ管理者は、クラウド リソースや内部ネットワークなど、信頼済みサイトを定義します。 信頼済みサイトのリストにないサイトは、信頼できないと見なされます。 Edge WebDriver は、InPrivate ウィンドウと信頼済みサイト リスト内のサイトの両方を自動化できます。
Application Guard の詳細については、以下を参照してください。
- Microsoft Edge での Microsoft Defender Application Guard のサポート。
- Microsoft Defender Application Guard の概要。
診断データの収集をオプトアウトする
既定では、Microsoft Edge WebDriver は、新しいセッション WebDriver コマンドの状態などの診断データを Microsoft に送信します。 Edge WebDriver の診断データ収集をオフにするには、MSEDGEDRIVER_TELEMETRY_OPTOUT
環境変数を 1
に設定します。 Edge WebDriver が収集するデータの詳細については、Microsoft Edge プライバシー ホワイトペーパーを参照してください。
従来の Microsoft WebDriver for EdgeHTML
Microsoft WebDriver は、EdgeHTML ベースの Microsoft Edge の従来の WebDriver 実装です。 レガシ Microsoft Edge (EdgeHTML) が OS で更新されたため、Microsoft WebDriver は省略可能な Windows コンポーネントとして配布されました。 Microsoft WebDriver は、最新の Chromium ベースのバージョンの Microsoft Edge と互換性がありません。 Microsoft WebDriver は、UWP アプリの WebDriver ベースのテストを作成した開発者が引き続き利用できます。これは、これらが EdgeHTML に依存しているためですが、Microsoft WebDriver は推奨されなくなりました。
WebDriver (EdgeHTML) を参照してください。
トラブルシューティング
WebDriver を使用して Microsoft Edge を自動化する際のトラブルシューティングの考慮事項を次に示します。
開発者ツールの可用性ポリシー
IT 管理者が DeveloperToolsAvailability ポリシーを 2
に設定している場合、ドライバーは Microsoft Edge DevTools を使用するため、Microsoft Edge WebDriver では Microsoft Edge の駆動がブロックされます。 Microsoft Edge を自動化するには、DeveloperToolsAvailability ポリシーが 0
または 1
に設定されていることを確認してください。
Selenium 3 から Selenium 4 へのアップグレード
WebDriver を使用して Microsoft Edge を自動化するには、Selenium を使用している場合は、Selenium 4 を使用していることを確認してください。 Selenium 3 はサポートされなくなりました。
Selenium 4 を使用する場合は、Microsoft Edge 用の Selenium ツールを使用する必要はありません。 Microsoft Edge 用の Selenium ツールは Selenium 3 専用です。 Microsoft Edge 用の Selenium ツールで Selenium 4 を使用して新しい EdgeDriver
インスタンスを作成しようとすると、次のエラーが発生します: System.MissingMethodException: 'Method not found: 'OpenQA.Selenium.Remote.DesiredCapabilities OpenQA.Selenium.DriverOptions.GenerateDesiredCapabilities(Boolean)'
。
Selenium 4 を使用していてこのエラーが発生した場合は、プロジェクトから Microsoft.Edge.SeleniumTools
を削除し、OpenQA.Selenium.Edge
名前空間の公式の EdgeOptions
クラスと EdgeDriver
クラスを使用していることを確認します。
関連項目
- Selenium ブラウザ自動化プロジェクト - Selenium のコンテキストでの WebDriver に関する情報、および Selenium を使用して自動化された WebDriver テストを書き込む方法。
- Microsoft Edge WebDriver チームに連絡して、WebDriver、WebDriver テスト フレームワーク (Selenium など)、および Microsoft Edge の使用に関するフィードバックを送信してください。