• Selenium Video Tutorials

Selenium - IE 驱动



Internet Explorer 是一个独立的服务器,它实现了 Webdriver 的线协议。这已在 Internet Explorer 11 版本和 Windows 10 中得到验证。它可能适用于 Internet Explorer 和 Windows 的早期版本,但未获得官方支持。

驱动程序支持 32 位和 64 位浏览器版本。例如,如果使用 IEDriverServer.exe 的 32 位版本,则将打开 32 位版本的 Internet Explorer。类似地,如果使用 IEDriverServer.exe 的 64 位版本,则将打开 64 位版本的 Internet Explorer。

IE 驱动程序安装

在使用 InternetExplorerDriver 之前,没有执行任何安装程序的先决条件,但是可能需要一些配置。独立服务器可执行文件可从以下链接中的图像突出显示部分获得 https://www.seleniumcn.cn/downloads/

Selenium IE Driver

下载完成后,应将其设置在正确的路径中。

IE 驱动的优势

InternetExplorerDriver 在真实的浏览器中执行,并与 JavaScript 一起使用。

IE 驱动的劣势

InternetExplorerDriver 仅适用于 Windows,并且速度较慢。

什么是命令行开关?

InternetExplorerDriver 的特性可以通过使用多个命令行参数来更新。

开关 用途
–port=<portNumber> 指向 InternetExplorerDriver 的 HTTP 服务器与来自语言绑定的命令通信的端口。默认值为 5555。
–host=<hostAdapterIPAddress> 指向 InternetExplorerDriver 的 HTTP 服务器与来自语言绑定的命令通信的主机适配器的 IP 地址。默认值为 127.0.0.1。
–log-level=<logLevel> 指向生成日志消息的级别。正确的值为 FATAL、ERROR、WARN、INFO、DEBUG 和 TRACE。默认值为 FATAL。
–log-file=<logFile> 指向日志文件的完整路径和文件名。默认值为标准输出。
–extract-path=<path> 指向用于提取服务器使用的支持文件的目录的完整路径。如果未提及,则默认值为 TEMP。
–silent 在服务器启动时抑制诊断输出。

什么是重要的系统属性?

系统属性使用 Java 中的 System.setProperty() 或使用 InternetExplorerDriver 使用的 -DpropertyName=value 命令行标志进行配置。

开关 用途
webdriver.ie.driver 指向 IE 驱动程序二进制文件的路径。
webdriver.ie.driver.host 指向 InternetExplorerDriver 与来自语言绑定的命令通信的主机适配器的 IP 地址。
webdriver.ie.driver.loglevel 指向生成日志消息的级别。正确的值为 FATAL、ERROR、WARN、INFO、DEBUG 和 TRACE。默认值为 FATAL。
webdriver.ie.driver.logfile 指向日志文件的完整路径和文件名。
webdriver.ie.driver.silent 在服务器启动时抑制诊断输出。
webdriver.ie.driver.extractpath 指向用于提取服务器使用的支持文件的目录的完整路径。如果未提及,则默认值为 TEMP。

IE 驱动程序配置的先决条件

  • 应从链接 https://www.seleniumcn.cn/downloads/ 下载 IEDriverServer。
  • 下载完成后,应将其设置在正确的路径中。
  • 在 Internet Explorer 版本 7、Windows Vista、Windows 7 和 Windows 10 的更高版本上,所有区域的受保护模式应设置为相同。可以打开和关闭该值,前提是每个区域的值都相同。

    要设置受保护模式,请从“工具”菜单中选择“Internet 选项”,然后导航到“安全”选项卡。每个区域在选项卡的末尾都有一个复选框,称为“启用受保护模式”。

  • Internet 选项对话框的“高级”选项卡中提供的增强受保护模式应禁用 Internet Explorer 版本 10 及更高版本。
  • 浏览器缩放比例应设置为 100%,这有助于将本机鼠标事件发送到正确的坐标。
  • 对于 Internet Explorer 版本 10,参数“更改文本、应用和其他项目的大小”应设置为 100%。
  • 我们应该在目标计算机上设置注册表项,以便驱动程序可以连接到 Internet Explorer 对象。对于 32 位 Windows,键值应为 -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer
   \Main\FeatureControl\FEATURE_BFCACHE

对于 64 位 Windows,键值应为 -

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
   \Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE

请注意,如果不存在,则应创建子键 FEATURE_BFCACHE。此外,在此键中,生成一个名为 iexplore.exe 的 DWORD 值,并将其设置为 0。

什么是本机事件和 Internet Explorer?

由于 InternetExplorerDriver 仅在 Windows 上运行,因此它尝试利用所谓的本机或操作系统级事件来对浏览器执行鼠标和键盘操作。这与对相同操作使用模拟 JavaScript 事件形成对比。

使用 JavaScript 事件 的优点是它不需要 JavaScript 沙箱,并且它确认浏览器内部的正确 JavaScript 事件传播。但是目前在 IE 浏览器没有焦点且尝试将鼠标悬停在元素上时,鼠标事件存在一些问题。

浏览器焦点

问题在于 IE 浏览器没有完全支持在它没有焦点时发送到浏览器窗口的 Windows 消息。唯一被单击的元素应该有一个焦点窗口,但元素不会经历点击。

将鼠标悬停在元素上

当尝试将鼠标悬停在元素上时,物理鼠标位于 IE 浏览器窗口的边界处,但悬停不起作用。它似乎在很短的时间内有效,但随后元素又恢复到其先前状态。

点击<option>元素或提交表单和alert()

有时 IEDriver 无法使用原生事件与元素通信,例如在选择<select>标签内的<option>元素时。此外,在使用 submit()、alert()、prompt() 方法时也会遇到相同的问题。

InternetExplorerDriver 的多个实例

IEDriverServer.exe 允许创建多个 InternetExplorerDriver 对象。但此功能尚未经过充分测试,在焦点、cookie 等方面可能存在问题。因此,建议使用虚拟机和 RemoteWebDriver。有两个与多个 Internet Explorer 对象之间共享的 cookie 相关的解决方案。第一步是以隐身模式启动 Internet Explorer。

之后,Internet Explorer 将以清除的会话数据打开,并在终止时不会存储修改后的会话数据。为此,请将功能 -orceCreateProcessApi 的值设置为 true,并将 browserCommandLineSwitches 的值设置为 -private。这仅适用于 Internet Explorer 8 及更高版本,并且 Windows 注册表应具有以下值,并且其路径应将键 TabProcGrowth 设置为 0 −

HKLM_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main.

要在 InternetExplorer 初始化时清除会话,我们需要将功能 ensureCleanSession 的值传递为 true。这将有助于清除所有正在执行的 Internet Explorer 实例的缓存。

远程执行 IEDriverServer.exe

要在远程计算机内部执行 Internet Explorer 驱动程序,我们需要使用独立的远程服务器与类似于 RemoteWebDriver 的语言绑定连接。

在 Windows 服务下执行 IEDriverServer.exe

不支持在 Windows 服务应用程序中执行 Internet Explorer 驱动程序。在这方面也没有经过测试。可能可以在 Windows 服务应用程序中运行 Internet Explorer 驱动程序,但可能存在许多需要解决的问题。

结论

这总结了我们关于 Selenium IE 驱动程序教程的全面介绍。我们从描述 IE 驱动程序安装、IE 驱动程序的优缺点、命令行开关是什么、重要的系统属性是什么、IE 驱动程序配置的先决条件是什么、原生事件和 Internet Explorer 是什么、InternetExplorerDriver 的多个实例、远程执行 IEDriverServer.exe 以及在 Windows 服务下执行 IEDriverServer.exe 开始。

这使您具备了 Selenium IE 驱动程序的深入知识。明智的做法是不断练习您所学到的知识,并探索与 Selenium 相关的其他知识,以加深您的理解并扩展您的视野。

广告