インターネット エクスプローラー ドライバーを使用して Microsoft Edge で IE モードを自動化する

ビジネスクリティカルなレガシ Web サイトまたはアプリがある場合は、Microsoft Edge のインターネット エクスプローラー (IE) モードでコンテンツをテストすることが必要になる場合があります。 この記事では、Microsoft Edge で IE モードを自動化するために、インターネット エクスプローラー ドライバー (IEDriver) の使用を開始する方法について説明します。

Microsoft Edge の IE モードは、従来の Web サイトやアプリの下位互換性のためにインターネット エクスプローラー 11 を引き続き必要とする組織向けの機能です。 IE モードの詳細については、「インターネット エクスプローラー (IE) モードとは」を参照してください。

2022 年 6 月 15 日より、インターネット エクスプローラー 11 は、特定のバージョンのWindows 10でサポートされなくなります。 詳細については、「インターネット エクスプローラー 11 デスクトップ アプリの廃止に関する FAQ」を参照してください

インターネット エクスプローラー ドライバー (IEDriver) をダウンロードする

Microsoft Edge で IE モードでテストを自動化するには、 IEDriver をダウンロードします。 ダウンロードする IEDriver のバージョンが 4.0.0.0 以上であることを確認します。

Selenium の [ダウンロード] ページの IEDriver セクション

必須の構成

IEDriver、Windows、Microsoft Edge を正しく構成するには、 Selenium の必須構成の要件を満たします。

PATH にドライバー実行可能ファイルを配置する

ドライバーの実行可能ファイルは PATH に配置する必要があります。 IE ドライバー サーバーに関するページを参照してください。 そのページの上部には、「スタンドアロン サーバー実行可能ファイルは、[ダウンロード] ページからダウンロードし、PATH に配置する必要があります」と表示されます。

ドライバーの場所が PATH に含まれていない場合は、Java システム プロパティ webdriver.ie.driver またはその他の方法を使用してドライバーの場所を設定する必要があります。

Microsoft Edge で IE モードを自動化する

次のセクションでは、Selenium を使用して Microsoft Edge で IE モードを自動化する方法について説明します。

この記事では Selenium フレームワークを使用する手順について説明しますが、WebDriver をサポートする任意のライブラリ、フレームワーク、プログラミング言語を使用できます。 別のフレームワークを使用して同じタスクを実行するには、選択したフレームワークのドキュメントを参照してください。

IEDriver を使用して IE モードで Microsoft Edge を起動するには:

  1. Microsoft Edge ブラウザーを指す追加のプロパティを使用して InternetExplorerOptions を定義します。

  2. InternetExplorerDriverのインスタンスを開始し、InternetExplorerOptions渡します。 IEDriver は Microsoft Edge を起動し、IE モードで Web コンテンツを読み込みます。

次のセクションでは、完全なサンプルを示し、以降のセクションでは、上記の各メイン手順に焦点を当てます。

完全なサンプル

次の例では、IE モードで Microsoft Edge を起動し、 bing.com に移動し、"WebDriver" を検索します。

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;

namespace IEDriverSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var ieOptions = new InternetExplorerOptions();
            ieOptions.AttachToEdgeChrome = true;
            //change the path accordingly
            ieOptions.EdgeExecutablePath = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe";

            var driver = new InternetExplorerDriver(ieOptions);
            driver.Url = "https://bing.com";
            driver.FindElement(By.Id("sb_form_q")).SendKeys("WebDriver");
            driver.FindElement(By.Id("sb_form")).Submit();

            driver.Quit();
        }
    }
}

以降のセクションでは、このサンプルの手順について詳しく説明します。

Microsoft Edge の追加プロパティを使用して InternetExplorerOptions を定義する

Microsoft Edge ブラウザーを指す追加のプロパティを使用して InternetExplorerOptions を定義します。

  1. InternetExplorerOptions()を呼び出して、新しい変数ieOptionsを定義します。

  2. プロパティ ieOptions.AttachToEdgeChrometrue に設定し、Microsoft Edge 実行可能ファイルのパスに ieOptions.EdgeExecutablePath します。

var ieOptions = new InternetExplorerOptions();
ieOptions.AttachToEdgeChrome = true;
//change the path accordingly
ieOptions.EdgeExecutablePath = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe";

IEDriver を起動する

IEDriver を起動します。 IEDriver は Microsoft Edge を起動し、IE モードで Web コンテンツを読み込みます。

InternetExplorerDriverを開始し、以前に定義したieOptionsを渡します。 IEDriver は IE モードで Microsoft Edge を起動します。 すべてのページ ナビゲーションとその後の操作は IE モードで行われます。

var driver = new InternetExplorerDriver(ieOptions);

既知の制限

このセクションでは、IEDriver と IE11 デスクトップ アプリケーションで以前に動作していたが、IE モードで Microsoft Edge で IEDriver を使用する場合の回避策が必要な既知のシナリオについて説明します。

新しいウィンドウを開く

テスト コードで次のいずれかの方法を使用して新しいブラウザー ウィンドウを作成する場合は、後で短い待機操作を追加して、IEDriver が新しいウィンドウを検出したことを確認する必要がある場合があります。

  • ページ内の<script>から window.open を呼び出して新しいウィンドウを開きます。
  • WebDriver の [新しいウィンドウ] コマンドを使用して 新しいウィンドウを 開きます。

新しいウィンドウが正常に作成され、IEDriver が検出したことを確認するには、新しいウィンドウへのハンドルが含まれるまで、ウィンドウ ハンドルの取得コマンドの結果を継続的にチェックする必要があります。

次の例では、新しいウィンドウを開くときに新しいウィンドウ ハンドルが検出されるのを待つ方法を示します。

新しいウィンドウを開くボタンで Click メソッドを呼び出した後、テスト コードは、新しいウィンドウ ハンドル driver.WindowHandles 含まれるまで待機する必要があります。

var initialHandleCount = driver.WindowHandles.Count;
driver.FindElement(By.Id("<Id of the button that will open a new window>")).Click();
var newHandles = driver.WindowHandles;
while (newHandles.Count == initialHandleCount)
{
    newHandles = driver.WindowHandles;
}

タブの作成とタブ間の切り替え

テスト コードが同じ Microsoft Edge ウィンドウ内の複数のタブを切り替える場合、非アクティブになったタブは、 ウィンドウ ハンドルの取得によって返されるハンドルの一覧に含まれない可能性があります。 インターネット エクスプローラー 11 デスクトップ アプリケーションでは、IEDriver はアクティブ化の状態に関係なく、IE のすべてのタブのハンドルを返します。

IE モードで Microsoft Edge を使用する場合、テストでフォーカスが特定のタブから切り替わり、後でそのタブに戻りたい場合は、タブのウィンドウ ハンドルのコピーを格納する必要があります。

関連項目