在自动化期间无法在网页上找到元素

时间:2014-12-12 08:59:26

标签: c# selenium

我使用Selenium web驱动程序(2.44)来自动化某些网页,在自动化运行期间我的浏览器出现意外错误。请参阅以下内容 图像:

enter image description here

所以当发生这种情况时,我的页面会挂起,框架无法找到当前网页中的任何元素。我试图升级/降级我的IE驱动程序。

当我双击此错误标志时,弹出IE窗口后出现:

enter image description here

1 个答案:

答案 0 :(得分:0)

开启浏览器的保护模式。它位于选项的“安全”选项卡中。如果这不起作用,请确保每个区域的选项(打开或关闭)相同。有四个区域(Int​​ranet,Trusted,Internet和Restricted)。

这里有一些代码可以帮助你(IE):

// Intranet
private const string REG_KEY_IE_ZONE_1 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1";
// Trusted
private const string REG_KEY_IE_ZONE_2 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2";
// Internet
private const string REG_KEY_IE_ZONE_3 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3";
// Restricted
private const string REG_KEY_IE_ZONE_4 = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4";

public static void SetIESecurityToProtected()
{
    // 3 is off, 0 is on
    try
    {
        // Intranet
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_1, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_1, "2500", 0);
        }

        // Trusted
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_2, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_2, "2500", 0);
        }

        // Internet
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_3, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_3, "2500", 0);
        }

        // Restricted
        if ((int)Registry.GetValue(REG_KEY_IE_ZONE_4, "2500", -1) == 3)
        {
            Registry.SetValue(REG_KEY_IE_ZONE_4, "2500", 0);
        }
    }
    catch (Exception e)
    {
        // handle your exception or record it...
    }
}

这将修改注册表...所以...阅读代码并确保您了解它的作用。这个对我有用。我看到不同人的不同行为,但这就是我必须做的事情。

以下是官方要求披露:

  1. 必须下载IEDriverServer exectuable并将其放入PATH。
  2. 在Windows Vista或Windows 7上的IE 7或更高版本中,必须将每个区域的保护模式设置设置为相同的值。只要每个区域的值相同,该值就可以打开或关闭。要设置保护模式设置,请选择" Internet选项..."从“工具”菜单中,单击“安全”选项卡。对于每个区域,选项卡底部都会显示一个复选框,标记为"启用保护模式"。
  3. 此外,"增强保护模式" IE 10及更高版本必须禁用。此选项位于“Internet选项”对话框的“高级”选项卡中。
  4. 浏览器缩放级别必须设置为100%,以便可以将本机鼠标事件设置为正确的坐标。
  5. 仅对于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值。
  6. 还有一些其他注意事项,例如需要考虑的浏览器窗口焦点,因此我建议仔细查看驱动程序文档:https://code.google.com/p/selenium/wiki/InternetExplorerDriver