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

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

Microsoft Edge 中的 IE 模式是仍需要 Internet Explorer 11 以实现旧网站或应用的向后兼容性的组织的功能。 若要了解有关 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. 启动 的 InternetExplorerDriver 实例并传递它 InternetExplorerOptions。 IEDriver 启动 Microsoft Edge,然后在 IE 模式下加载 Web 内容。

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

完整示例

以下示例在 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. 将 属性设置为 true,并将 ieOptions.EdgeExecutablePath 设置为 ieOptions.AttachToEdgeChrome Microsoft Edge 可执行文件的路径。

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 模式下将 IEDriver 与 Microsoft Edge 配合使用时需要解决方法的已知方案。

打开新窗口

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

  • 通过在页面中调用 window.open from <script> 来打开新窗口。
  • 使用 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 窗口中的多个选项卡之间切换,则变为非活动状态的选项卡可能不会包含在 “获取窗口句柄”返回的句柄列表中。 在 Internet Explorer 11 桌面应用程序中,无论激活状态如何,IEDriver 都将返回 IE 中所有选项卡的句柄。

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

另请参阅