Selenium 简明教程

Selenium - IE Driver

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 Driver Installation

在使用 InternetExplorerDriver 之前无需执行任何安装程序,但可能需要某些配置。独立的服务器可执行文件可通过图片 https://www.selenium.dev/downloads/ 中突出显示的部分的以下链接获取。

selenium ie driver

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

Advantages of IE Driver

InternetExplorerDriver 在真实浏览器中执行,并与 JavaScript 协作。

Disadvantages of IE Driver

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

What are Command Line Switches?

可以通过借助多个命令行参数来更新 InternetExplorerDriver 的特征。

Switch

Purpose

–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>

指示日志文件的完整路径和文件名。默认值为 stdout。

–extract-path=<path>

指示服务器使用时提取服务器利用的支持文件的完整路径。未提及时,默认值为 TEMP。

–silent

当服务器启动时,取消诊断输出。

What are Vital System Properties?

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

Switch

Purpose

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。

Prerequisites for IE Driver Configurations

  1. IEDriverServer 应从链接 https://www.selenium.dev/downloads/ 下载

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

  3. 在 Internet Explorer 7 及以上版本、Windows Vista、Windows 7 和 Windows 10 中,对所有区域都应该设置相同的受保护模式。可以启用和禁用此值,前提是对于每个区域,该值保持相同。要设置受保护模式,请从“工具”菜单中选择“Internet 选项”,然后导航到“安全”选项卡。对于每个区域,选项卡末尾都有一个名为“启用受保护模式”的复选框。

  4. Internet 选项对话框的“高级”选项卡中提供的增强保护模式应禁用 Internet Explorer version 10 及以上版本。

  5. 浏览器的缩放比例应设为 100%,这有助于本机鼠标事件采用适当的坐标。

  6. 对于 Internet Explorer version 10,参数“更改文本、应用和其他项目的尺寸”应设为 100%。

  7. 我们应在目标计算机上设置注册表项,以便驱动程序可以连接到 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 不存在,则应创建它。此外,在该键中生成一个 DWORD 值,称为 iexplore.exe,并将其设为 0。

What are Native Events and Internet Explorer?

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

使用 JavaScript Events 的优点是不需要 JavaScript 沙盒,且它会确认浏览器中的正确 JavaScript 事件传播。但目前在 IE 浏览器没有获得焦点以及尝试悬停在元素上的情况下,鼠标事件存在一些问题。

Browser Focus

问题在于,当 IE 浏览器失去焦点时,它并不完全支持发送到浏览器窗口的 Windows 消息。应该对唯一被点击的元素设置焦点窗口,但元素不会执行点击。

Hovering Over Elements

在尝试悬停在元素上的过程中,物理鼠标位于 IE 浏览器窗口的边界,但悬停不起作用。它似乎会在很短的时间内起作用,但元素随后又会返回到其先前状态。

Clicking <option> Elements or Submit Forms and alert()

有时候,IEDriver 不会使用本机事件与元素通信,例如在 <select> 标记中选择 <option> 元素时。此外,使用 submit()、alert()、prompt() 方法时也会遇到相同的问题。

Multiple Instances of InternetExplorerDriver

IEDriverServer.exe 允许创建 InternetExplorerDriver 的多个对象。但此功能尚未经过全面测试,且可能存在焦点、Cookie 等方面的问题。因此,建议改为使用虚拟机和 RemoteWebDriver。与多个 Internet Explorer 对象共享 Cookie 有两种解决方案。第一步是在隐私模式下启动 Internet Explorer。

此后,Internet Explorer 将使用清理后的会话数据打开,且不会在终止时存储修改后的会话数据。要实现此目的,传递功能 - orceCreateProcessApi,其值为 true,以及浏览器命令行开关,其值为 -private。这仅适用于 Internet Explorer version 8 及以上版本,且其路径应具有以下值的 Windows 注册表,并且其键 TabProcGrowth 应设为 0:

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

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

Execute IEDriverServer.exe Remotely

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

Execute IEDriverServer.exe Under Windows Service

不支持在 Windows 服务应用程序内执行 Internet Explorer 驱动程序。而且,尚未对此进行测试。可能可以在 Windows 服务应用程序内运行 Internet Explorer 驱动程序,但可能存在需要解决的许多问题。

Conclusion

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

这使你具备了有关 Selenium IE 驱动程序的深入知识。明智的做法是继续实践你所学到的内容,并探索与 Selenium 相关的其他内容,以便加深你的理解,拓宽你的视野。