如何避免"保护模式"在Selenium中使用IEDriverServer?

时间:2015-05-14 16:31:32

标签: internet-explorer selenium jenkins build automated-tests

我尝试使用Internet Explorer(在我的情况下为8)通过Jenkins执行Selenium测试。我理解"保护模式"需要为所有站点区域设置相同的Internet安全选项(启用或禁用)才能使其正常工作。

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

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

Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.

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

2 个答案:

答案 0 :(得分:6)

(发布我自己问题的答案,其他任何人都可以通过搜索来到这里。)

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

首先,验证您的"打开保护模式"两种设置完全相同"计算机配置"和"用户配置"。我不认为设置是启用/禁用,或者保护模式是否启用/禁用实际上是重要的,只要它们都是启用/禁用(11在“计算机配置”下,“用户配置”下的“11”是相同的。

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

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

将每个配置为相同的值。在我的情况下,我最初将这些全部设置为启用和保护模式已禁用,但是一旦我最终找到注册表更改(见下文),我就重新启用并将所有内容设置为" Not Configured"就像它最初一样,我的解决方案仍然有效。重点是使它们完全相同。

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

完成此操作后,您的所有保护模式设置应该相同。注意:如果您使用一个用户执行测试而另一个用户进行系统管理,请仅对两个用户执行此过程。 (我的设置有问题,所以我不确定这是否是必需的,但它不会受到伤害。)

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

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

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

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

注意:我正在使用Jenkins的命名用户帐户进行IEDriverServer操作。如果您正在以"本地系统"执行测试。用户,您可能需要查看this answer以获取进一步说明/解决问题的方法。

答案 1 :(得分:0)

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
             }