使用 Internet Explorer 驱动程序在 Microsoft Edge 中自动执行 IE 模式

如果拥有业务关键型旧版网站或应用,则可能需要在 Microsoft Edge 的 Internet Explorer (IE) 模式下测试内容。 本文介绍如何开始使用 Internet Explorer 驱动程序 (IEDriver) 在 Microsoft Edge 中自动执行 IE 模式。

对于仍需要 Internet Explorer 11 的组织而言,Microsoft Edge 中的 IE 模式是一项功能,用于旧版网站或应用的向后兼容性。 若要详细了解 IE 模式,请阅读 什么是 Internet Explorer (IE) 模式?

2022 年 6 月 15 日开始,某些版本的 Windows 10 将不再支持 Internet Explorer 11。 有关详细信息,请阅读 Internet Explorer 11 桌面应用停用常见问题解答

下载 Internet Explorer 驱动程序 (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. 启动并传递它的InternetExplorerOptions实例InternetExplorerDriver。 IEDriver 启动 Microsoft Edge,然后在 IE 模式下加载 Web 内容。

下一部分显示完整的示例,然后后续部分重点介绍上面列出的每个主要步骤。

完整示例

以下示例在 IE 模式下启动 Microsoft Edge,导航到 bing.com,然后搜索“WebDriver”。

  • C#
  • Python
  • Java
  • JavaScript
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

  • C#
  • Python
  • Java
  • JavaScript
  1. 通过调用InternetExplorerOptions()定义新变量ieOptions

  2. 将属性设置ieOptions.AttachToEdgeChrometrueMicrosoft 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 内容。

  • C#
  • Python
  • Java
  • JavaScript

启动 InternetExplorerDriver 并传递之前定义 ieOptions的 。 IEDriver 在 IE 模式下启动 Microsoft Edge。 所有页面导航和后续交互都以 IE 模式进行。

var driver = new InternetExplorerDriver(ieOptions);

已知限制

本部分介绍以前与 IEDriver 和 IE11 桌面应用程序配合使用的已知方案,但在 IE 模式下将 IEDriver 与 Microsoft Edge 配合使用时需要解决方法。

打开新窗口

如果测试代码使用以下方法之一创建新的浏览器窗口,则可能需要在之后添加一个简短的等待操作,以确保 IEDriver 检测到新窗口:

若要确保已成功创建新窗口并检测到 IEDriver,必须持续检查 Get Window Handles 命令的结果,直到它包含新窗口的句柄。

下面的示例演示了在打开新窗口时等待检测到新窗口句柄的可能方法。

  • C#
  • Python
  • Java
  • JavaScript

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 窗口中的多个选项卡之间切换,则“ 获取窗口句柄”返回的句柄列表中可能不包含处于非活动状态的选项卡。 在 Internet Explorer 11 桌面应用程序中,IEDriver 将为 IE 中的所有选项卡返回句柄,而不考虑激活状态。

在 IE 模式下使用 Microsoft Edge 时,如果测试将焦点从某个选项卡切换到某个选项卡,并且希望以后能够切换回该选项卡,则必须存储选项卡窗口句柄的副本。

另请参阅