InternetExplorerDriver 的注册表项 HKEY_LOCAL_MACHINE\...\FEATURE_BFCACHE 如何解决 Internet Explorer 11 问题?

2024-01-05

因此,我正在 IE11 中自动化一个 Web 应用程序(为政府合同欢呼三声!),并且我按照 Selenium Wiki 上的说明来配置该东西,因为我们遇到了一堆奇怪且不稳定的行为。我在这一步,它说我已经添加了一个注册表项来帮助维护驱动程序和浏览器之间的连接:

仅对于 IE 11,您需要在目标计算机上设置注册表项,以便驱动程序可以维持与其创建的 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 且值为 0 的 DWORD 值。

但它并没有真正解释为什么?如果没有添加此密钥会出现什么问题? “维护 IE 实例和网络驱动程序之间的连接”一词可能有很多不同的含义。

我们遇到的问题主要涉及 Selenium 方法,例如 .click() 不起作用或无法单击页面以供那些感兴趣的参考点使用。我们还遇到了一些奇怪的滚动问题,当元素刚刚离开屏幕时,它无法通过测试,这很奇怪,因为它应该读取 DOM,但我离题了。


你没看错。根据中的文档所需配置 https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration的部分Internet Explorer驱动程序 https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver其中明确提到:

For IE 11只是,您需要在目标计算机上设置一个注册表项,以便驱动程序可以保持与其创建的 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. 
    
  • Note The FEATURE_BFCACHE子项可能存在也可能不存在,如果不存在则应创建。重要提示:在此注册表项内,创建一个名为 iexplore.exe 且值为 0 的 DWORD 值。

一个简短的历史

根据@JimEvans 在讨论中的评论IE11 与 IEDriverServer 异常:无法获取浏览器 https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/6511:

  • On 16 December 2014, Microsoft released update KB3025390 via Windows Update https://support.microsoft.com/kb/3025390 as part of its normal "patch Tuesday" update cycle. For most users, this update is downloaded and installed without user interaction. This update breaks the IE driver when using it with IE11.

  • As part of this update, attempting to use the COM method IHTMLWindow2::execScript http://msdn.microsoft.com/en-us/library/ie/ms536420%28v=vs.85%29.aspx returns an "access denied" result. This renders the driver unable to execute JavaScript in the page bring browsed. However, given that large portions of driver functionality are implemented using JavaScript, this effectively renders the driver all but unusable with IE11.

  • There is no known workaround for this issue. At this time, the Microsoft IE driver implementation is still incomplete, lacking basic functionality required to make it usable, so it cannot be recommended. Uninstalling the update might restore IE driver functionality, but this is hardly ideal.

  • While the execScript method is marked as deprecated for IE11, the driver had heretofore been able to use that method successfully, and it was hoped that it would remain useful throughout the IE11 life cycle. We now know this not to be the case. Additionally, attempts to use the Microsoft-suggested replacement, eval http://msdn.microsoft.com/en-us/library/ie/bg182625(v=vs.85).aspx#legacyAPIs, have been fruitless thus far.

  • The issue is currently being tracked in the Selenium issue tracker https://code.google.com/p/selenium/issues/detail?id=8302.

  • 在此讨论中@JimEvans 进一步添加了评论:

该注册表项禁用 IE 的一项名为 BFCache 的缓存功能,该功能会影响使用浏览器的向前和向后导航功能时缓存和加载页面的方式。启用后,驱动程序所依赖的 COM 对象(是的,驱动程序使用的完全相同的对象)mshtml库)成为orphaned如果您向后或向前导航。还有其他方法可以提高驾驶员的“可靠性”click() method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

InternetExplorerDriver 的注册表项 HKEY_LOCAL_MACHINE\...\FEATURE_BFCACHE 如何解决 Internet Explorer 11 问题? 的相关文章

  • 如何使用不同的基本路径托管 Blazor WebAssembly 应用程序

    我有一个 Blazor Webassemble NET 托管应用程序 在我们托管它的服务器上 应用程序的基本路径将是mydomain com coolapp 因此 为了尝试让应用程序在服务器上正确呈现 我一直遵循本页 应用程序基本路径 部分
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 每个元素的 asp.net Web 表单自定义错误消息

    我创建了一个 Web 应用程序 表单 以及后端 SQL 插入和查询 目前我正在显示所有用户错误消息 div style padding 1em div
  • 获取列表框中视图中的项目

    我有一个 ListBox 其属性 VirtualizingStackPanel VirtualizationMode 设置为 回收 我正在绑定一个自定义集合 实现IList and IList
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • 当我尝试传递临时地址作为参数时,它是一个 UB 吗?

    对于以下 C 代码 include
  • 更改私有模块片段是否会导致模块重新编译?

    On 此页面有关 C 20 模块功能 https www modernescpp com index php c 20 modules private module fragment and header units 我发现了这样的说法 借
  • MINIX内部碎片2

    我正在用 C 语言编写一些软件 它递归地列出给定目录中的所有文件 现在我需要计算出内部碎片 我花了很长时间研究这个问题 发现 ext2 上的内部碎片只发生在最后一个块中 我知道理论上你应该能够从索引节点号获得第一个和最后一个块地址 但我不知
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的
  • NHibernate:无状态会话错误消息无法获取代理

    我正在使用 nHibernate 无状态会话来获取对象 更新一个属性并将对象保存回数据库 我不断收到错误消息 无状态会话无法获取代理 我在其他地方有类似的代码 所以我不明白为什么这不起作用 有谁知道问题可能是什么 我正在尝试更新Screen

随机推荐

  • map.setMyLocationEnabled(true);不管用

    我刚刚开始开发一个 android 项目并正在使用 Google Map API 我可以在我的应用程序上获取地图 但是当我尝试使用以下命令启用当前位置时map setMyLocationEnabled true 应用程序说不幸的是应用程序已
  • DELETE FROM ... 报告“.”处或附近的语法错误

    我试图从数据库中仅删除一项数据 但是 当我编写命令时 我不断收到一些语法错误 您能告诉我错误在哪里吗 这是我尝试过的命令 DELETE FROM database userprofile WHERE user username some E
  • 我正在尝试编写一个返回多个值的宏

    这条线上出现错误 Finalrow Cells Row Count 1 End X1UP Row Error is 对象所需的运行时错误 424 下面是代码 Sub MyVlookup Dim r As Long C As Long Col
  • 在MATLAB MEX库中使用boost,与MATLAB的版本不同

    我们正在创建许多使用我们的通信库的 MATLAB MEX 文件 这个通信库大量使用了Boost 现在 MATLAB 也在内部使用 boost 这意味着在标准设置中 我们不能使用与 MATLAB 附带的版本不同的 boost 版本 否则就会发
  • Excel中如何将长表格转换为宽表格?

    一张图片胜过千言万语 假设在一张纸中我有下表 使用这些信息 我想以编程方式在另一张纸中生成这样的表格 有点将长表格分解为宽表格 你怎样才能做到这一点 使用VBA Range G1 K99 Clear For Each xx In Range
  • MapActivity 中的 SherlockActionBar

    我在整个应用程序中广泛使用 Sherlock Action Bar 但我有一个继承自 MapActivity 的活动 因此我无法使其继承自 SherlockActivity 有什么方法可以利用地图中的 Sherlock 操作栏来自定义它吗
  • 在 SQL Server 中将标识列重置为零?

    如何在 SQL Server 中将表的 Identity 列重置为零 Edit 我们如何使用 LINQ to SQL 来做到这一点 DBCC CHECKIDENT MyTable RESEED NewValue 您还可以执行截断表 但是 当
  • += 事件运算符

    public void Bar Foo foo new Foo foo MyEvent foo MyEvent foo FireEvent void foo MyEvent object sender EventArgs e Foo sen
  • Spring Security 5 OAuth2客户端密码授予类型

    我有2个应用程序 Spring应用程序1是客户端和资源服务器 Spring应用程序2是授权服务器 用户将能够登录应用程序 1 并访问其资源 我想实现以下流程 用户在登录表单中输入他的凭据 gt 应用程序 1 将使用用户凭据及其密码从应用程序
  • MFC 中的国际化

    终于 经过多年的推迟 将我的应用程序本地化为英语以外的其他几种语言 第一个挑战是设计与我的 C MFC 应用程序的集成 该应用程序具有数十个对话框和无数字符串 我遇到了两种可能的替代实现 将本地化资源文件编译并部署为 DLL 提取所有字符串
  • PHPCS 未在命令行上运行?

    当我输入 phpcs version 时 我没有得到版本号 而是得到如下内容 Applications drupal php bin phpcs line 2 php No such file or directory Applicatio
  • 使用 PHP 解析 xml 文件的 simpleXML 替代方案

    我只是想知道是否有 simpleXML 的替代方案来使用 PHP 解析 XML 数据 例如 如果 simpleXML 模块未加载 或者即使存在比 SimpleXML 性能更好的库 类 显然有处理 XML 的多种不同方式 http docs
  • 10.3 中包含 javax.servlet 的 WebLogic Jar 在哪里?

    我正在尝试配置我的路径以将 javax servlet 包含在 WebLogic 中 WebLogic 已拆分出 Jar 文件 那么哪一个包含 javax servlet 从 WebLogic 10 开始 BEA 外部化了 API 规范的实
  • 查找 GZIP 文件内的文件大小

    有没有办法找出java中GZIP文件内原始文件的大小 例如 我有一个 15 MB 的文件 a txt 它已被 GZipped 为 3MB 大小的 a gz 我想知道 a gz 中存在的 a txt 的大小 而不需要解压缩 a gz 除了压缩
  • 如何为 Django 设置 Jupyter/IPython Notebook?

    我一直在使用中描述的方法这个帖子 https andrewbrookins com python using ipython notebook with django 用于设置 IPython Notebook 以与 Django 很好地配
  • websocket 是否仅适用于浏览器

    我正在尝试使用第 3 方库编写本机 Objective C 和本机 Android 应用程序 我已经选择了图书馆并且我已经在这方面取得了进展 我团队中的一个人认为 目前 websocket 的实现主要集中在 Web 浏览器上 如果我们使用这
  • Java 中的格式化打印

    我有这个代码 public String toString Day day String s day getDayName day toString return s 这是 Day 类的 toString 方法 public String
  • 根据列值是否在另一列中将列添加到 PySpark DataFrame

    我有一个 PySpark DataFrame 其结构为 u1 1 1 2 3 u1 4 1 2 3 toDF user item fav items 我需要添加另一列 1 或 0 具体取决于 item 是否在 fav items 中 所以我
  • 禁用所有库的日志消息

    我想记录来自我的程序的消息 而不是来自它使用的库的消息 我可以禁用 更改各个库的日志记录级别 如下所示 logging getLogger alibrary setLevel logging ERROR 问题是 我的程序使用了很多很多的库
  • InternetExplorerDriver 的注册表项 HKEY_LOCAL_MACHINE\...\FEATURE_BFCACHE 如何解决 Internet Explorer 11 问题?

    因此 我正在 IE11 中自动化一个 Web 应用程序 为政府合同欢呼三声 并且我按照 Selenium Wiki 上的说明来配置该东西 因为我们遇到了一堆奇怪且不稳定的行为 我在这一步 它说我已经添加了一个注册表项来帮助维护驱动程序和浏览