使用Selenium驱动IE模式下的Edge

原文地址:https://titusfortner.com/2022/09/28/edge-ie-mode.html

Internet Explorer 已死! IE 模式万岁。 Selenium 不再支持独立浏览器,但它支持在 IE 模式下执行 Microsoft Edge。 我编写了 C++ 代码(第一次!)以使 v4.5 中的 IEDriverServer 更易于使用。 另外,我将展示如何解决两个常见问题。

Windows 10

在 Windows 10 上,您可能同时安装了 IE 和 Edge 浏览器。

Standalone IE

只要您将缩放级别设置为 100% 并使所有保护模式设置相同,就不需要额外的自定义选项来使用独立的 Internet Explorer 运行测试。

IE Mode (old)

要在 IE 模式下使用 Edge,在 IEDriverServer v4.5 之前,您需要设置 2 个单独的选项:ie.edgechromiumie.edgepath(IE 选项类上的方法名称因语言而异)。 IE 模式的第一个问题是 IE 模式的缩放级别与独立 Internet Explorer 的缩放级别不同。 我还没有找到更改 IE 模式缩放级别的方法,这意味着您必须设置 ignoreZoomSetting 选项,同样,它在不同语言中具有不同的方法名称。 但是,设置此选项后,IEDriver 无法正确解析屏幕上的坐标。 这意味着 Actions 类中需要使用坐标的各种鼠标和滚轮方法将无法在 IE 模式下工作。

另请注意,如果您想在 IE 模式下使用 Edge,则不能卸载 Internet Explorer(是的,我试过了)。

InternetExplorerOptions options = new InternetExplorerOptions();
options.ignoreZoomSettings();
options.attachToEdgeChrome();
options.withEdgeExecutablePath(System.getenv("EDGE_PATH"));
driver = new InternetExplorerDriver(options);

IE Mode (new)

从 IEDriverServer v4.5 开始,您不再需要指定 Edge 的位置; 如果您已指定使用 Edge,驱动程序将自动为您找到默认浏览器。

InternetExplorerOptions options = new InternetExplorerOptions();
options.ignoreZoomSettings();
options.attachToEdgeChrome();
driver = new InternetExplorerDriver(options);

Windows 11

Windows 11 甚至不会安装 IE。 需要指定驱动程序使用 Edge 是多余的,因为它是唯一可用的选项,因此从 IEDriverServer v4.5 开始不再需要。

IE 模式在 Windows 11 和 Windows 10 上存在相同的问题,用户无法更改缩放级别,因此仍必须设置 ignoreZoomSetting。 IE 模式的另一个主要特性是 Windows 11 特有的,因为当微软删除 Internet Explorer UI 时,他们也删除了更改不同网络区域的保护模式设置的能力。 在区域之间移动会导致安全问题,因此驱动程序不允许这样做。 如果您是众多已经设置 ignoreProtectedModeSettings 参数以忽略此问题的人之一,请知道 您做错了。 (不?)幸运的是,该标志所做的只是告诉驱动程序忽略注册表值,而这些值在 Windows 11 中甚至默认不存在,因此在这里使用它也无济于事。

Actions 类中需要使用坐标的方法在 IE 模式下不起作用

IE 驱动程序总是打开本地主机上的起始页,通常是“http://localhost:5555/”,它位于本地 Intranet 区域中。 大多数人想导航到 Internet 区域中的页面,而 Edge 在进行初始导航后挂起。 解决这个问题有两种选择。

  • 快速简便且可能“足够好”的解决方案是设置 initialBrowserUrl 选项。 出于某种原因,如果您在 Internet 区域中指定一个 URL,它将使浏览器通过它本来会挂起的部分。
  • 更彻底和更好的解决方案是编辑注册表以直接设置所需的值。 打开注册表编辑器并导航至HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0。 您想要添加一个键为2500并设置值为3DWORD。 也将其添加到区域 1、2、3 和 4。 请注意,值0启用保护模式,值3禁用它。 选择哪个并不重要,只要将所有 5 个区域设置为相同的值即可。 (我很快就会上传一段视频来引导你完成这个过程)

这是忽略缩放级别并设置初始 URL 的新代码的样子:

InternetExplorerOptions options = new InternetExplorerOptions();
options.ignoreZoomSettings();
options.withInitialBrowserUrl("https://selenium.dev")
driver = new InternetExplorerDriver(options);

微软承诺在 2029 年之前支持 IE 模式,因此将有足够的时间来修复这些问题和/或发现新问题。 有一个 已知问题 的跟踪器。 如果您对 IE 模式有疑问,请创建一个 Selenium 错误报告,我们将与 Microsoft Edge 团队协调并进行调查 .