Internet explorer 我如何避免与“问题”;“保护模式”;在Selenium中使用IEDriverServer?

Internet explorer 我如何避免与“问题”;“保护模式”;在Selenium中使用IEDriverServer?,internet-explorer,selenium,jenkins,build,automated-tests,Internet Explorer,Selenium,Jenkins,Build,Automated Tests,我正试图通过Jenkins使用Internet Explorer(在我的例子中是8)执行Selenium测试。我理解,为使其正常工作,需要将所有站点区域的“受保护模式”Internet安全选项设置为相同的值(启用或禁用) 我已尝试在浏览器中(确保以在Jenkins中执行测试的同一用户的身份登录)以及通过“本地计算机策略\计算机配置\管理模板\ Windows组件\ Internet Explorer \ Internet控制面板\安全页面”和下的所有站点区域的GPO策略执行此操作“本地计算机策略

我正试图通过Jenkins使用Internet Explorer(在我的例子中是8)执行Selenium测试。我理解,为使其正常工作,需要将所有站点区域的“受保护模式”Internet安全选项设置为相同的值(启用或禁用)

我已尝试在浏览器中(确保以在Jenkins中执行测试的同一用户的身份登录)以及通过“本地计算机策略\计算机配置\管理模板\ Windows组件\ Internet Explorer \ Internet控制面板\安全页面”和下的所有站点区域的GPO策略执行此操作“本地计算机策略\用户配置\管理模板\ Windows组件\ Internet Explorer\Internet控制面板\安全页面”。”

但是,我仍然收到下面列出的错误:

启动Internet Explorer时出现意外错误。并非所有区域的保护模式设置都相同。所有区域的启用保护模式必须设置为相同的值(启用或禁用)。

有人能给我指出正确的方向来解决这个问题吗?

(如果有人从搜索中来到这里,请将我自己问题的答案张贴出来。)

为了最终克服这个问题,我必须做两件事:

首先,验证“计算机配置”和“用户配置”的“打开保护模式”设置是否完全相同。我认为启用/禁用设置或启用/禁用保护模式并不重要,只要所有设置都是启用/禁用的(11在计算机配置下和11在用户配置下)相同

执行此操作的最快方法是使用组策略编辑器验证是否已配置所有适当的设置

要执行此操作,请打开本地组策略编辑器(start/run/gpedit.msc)并导航到“本地计算机策略\计算机配置\管理模板\所有设置”节点。按设置排序(如果尚未完成)并向下滚动,直到看到一组“打开保护模式”设置

将它们配置为相同的值。在我的例子中,我最初将它们全部设置为启用和禁用保护模式,但当我最终找到注册表更改(见下文)时,我返回并将所有设置为“未配置”“就像最初一样,我的解决方案仍然有效。主要的一点是使它们完全相同

然后对“本地计算机策略\用户配置\管理模板\所有设置”节点重复此过程

完成此操作后,所有受保护模式设置都应相同。注意:如果使用一个用户执行测试,另一个用户用于系统管理,请在两个用户上执行此过程,以防万一。(我的设置中存在问题,因此我不确定是否需要此设置,但这不会有任何影响。)

其次,调整注册表设置。 导航到“HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones”。对于每个子项(0,1,2,3,4),找到名为“2500”的DWORD。如果它不存在,请创建它。再次将所有5个区域的值设置为相同。我使用了“0”,这是启用的。我相信“3”已禁用

对使用IEDriverServer.exe的用户的“HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones”重复此过程

更新注册表后,重新启动计算机

在尝试手动或通过GPO调整设置数小时后,遵循这两个步骤解决了我的问题。其他人似乎在这两种方法中都取得了成功,但使用注册表编辑是在我的环境中唯一有效的方法(在两个不同的Jenkins从机上复制(并修复)

注意:我正在使用Jenkins的命名用户帐户执行IEDriverServer操作。如果您作为“本地系统”执行测试用户,您可能需要查看更多说明/故障排除。

我使用了启用的“0”。我相信禁用了“3”。这完全正确。也节省了我们的时间,非常感谢!
You can use the following code to except the security :

    try
      {
       driver.navigate().to("javascript:document.getElementById('overridelink').click()");
      }

 catch (Exception e) {
                 // do nothing as this exception is expected if no security ssl cert issue
             }