gpt4 book ai didi

selenium - InternetExplorerDriver 缩放级别错误

转载 作者:行者123 更新时间:2023-12-03 12:22:10 26 4
gpt4 key购买 nike

我正在尝试针对 IE8 运行测试,但遇到了一个奇怪的问题:

  • 创建 webdriver 实例时(driver = Selenium::WebDriver.for :ie),IE 启动,WebDriver 抛出异常:

    “启动 Internet Explorer 时出现意外错误。浏览器缩放级别设置为 0%”
  • IE 似乎显示无法连接到 IE 驱动程序服务器,但如果我手动刷新浏览器,它就可以正常连接。

    我在网上查了一下,似乎只有另外两个人报告了这一点。一种可能的解决方案是确保所有区域都具有相同的“保护模式”设置,就像它们所做的那样。

    我的环境是带有 IE Driver Server v2.25.3 的 Windows 7 和 IE8,我使用的是 Ruby 绑定(bind)。

  • 有任何想法吗?

    最佳答案

    虽然设置 IgnoreZoomLevel 属性可以让您无错误地打开浏览器,但测试不会发现缩放级别不是 100% 的元素。

    根据您的系统 DPI 设置,发送 Ctrl+0 也不会总是得到预期的结果。如果您选择了中等 (120 dpi) 或较大 (144 dpi)(Windows 7 设置),Ctrl+0 会将缩放设置为 125% 或 150%。

    我发现的一种解决方法是根据 DPI 设置通过在注册表中打开 IE 之前编辑设置来设置缩放级别。这不需要管理员权限,因为所有内容都位于 HKEY_CURRENT_USER 下。

    这是我想出的小助手类。 (C#)

    using Microsoft.Win32;

    namespace WebAutomation.Helper
    {
    public static class InternetExplorerHelper
    {
    private static int m_PreviousZoomFactor = 0;

    public static void SetZoom100()
    {
    // Get DPI setting.
    RegistryKey dpiRegistryKey = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop\\WindowMetrics");
    int dpi = (int)dpiRegistryKey.GetValue("AppliedDPI");
    // 96 DPI / Smaller / 100%
    int zoomFactor100Percent = 100000;
    switch (dpi)
    {
    case 120: // Medium / 125%
    zoomFactor100Percent = 80000;
    break;
    case 144: // Larger / 150%
    zoomFactor100Percent = 66667;
    break;
    }
    // Get IE zoom.
    RegistryKey zoomRegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Internet Explorer\\Zoom", true);
    int currentZoomFactor = (int)zoomRegistryKey.GetValue("ZoomFactor");
    if (currentZoomFactor != zoomFactor100Percent)
    {
    // Set IE zoom and remember the previous value.
    zoomRegistryKey.SetValue("ZoomFactor", zoomFactor100Percent, RegistryValueKind.DWord);
    m_PreviousZoomFactor = currentZoomFactor;
    }
    }

    public static void ResetZoom()
    {
    if (m_PreviousZoomFactor > 0)
    {
    // Reapply the previous value.
    RegistryKey zoomRegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Internet Explorer\\Zoom", true);
    zoomRegistryKey.SetValue("ZoomFactor", m_PreviousZoomFactor, RegistryValueKind.DWord);
    }
    }
    }
    }

    我想出了比较注册表中不同系统 DPI 设置下的 ZoomFactor 值和 IE 缩放设置为 100% 的值。在较新的 Windows 版本中有超过 3 个 DPI 设置,因此如果需要,您需要扩展类。

    您也可以修改它以计算您想要的任何缩放级别,但这与我无关。

    我只是调用 InternetExplorerHelper.SetZoom100();在打开 IE 和 InternetExplorerHelper.ResetZoom() 之前关闭后。

    关于selenium - InternetExplorerDriver 缩放级别错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034969/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com