【问题标题】:Robot Framework - set Protected Mode settings for IERobot Framework - 为 IE 设置保护模式设置
【发布时间】:2018-08-30 21:47:59
【问题描述】:

我遇到以下错误:“启动 Internet Explorer 时出现意外错误。所有区域的保护模式设置不同。启用保护模式必须设置为相同的值(为所有区域启用或禁用) ." 使用 Selenium WebDriver 打开 IE 时。

在 Java 中(使用 selenium-server 3.8.1),我使用以下方法解决了这个问题:

InternetExplorerOptions options = new InternetExplorerOptions();
options.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
driver = new InternetExplorerDriver(options);

如何为 Robot Framework 执行此操作(使用 SeleniumLibrary 的 Java 端口:robotframework-seleniumlibrary-3.8.1.0-jar-with-dependencies)?

${ie_options}=    Create Dictionary    InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS=true
Open Browser    ${url}    ie    None    None    ${ie_options}   None

我尝试了上面的方法,但仍然遇到错误。将其更改为 ignoreProtectedModeSettings 无济于事。有什么想法吗?

【问题讨论】:

    标签: java selenium robotframework selenium-iedriver


    【解决方案1】:

    我编写了自定义关键字,它更新了Windows Registry 以启用ProtectedModeall Zones

    下面是Python代码:

    from winreg import *
    
    def Enable_Protected_Mode():
        """
        # 0 is the Local Machine zone
        # 1 is the Intranet zone
        # 2 is the Trusted Sites zone
        # 3 is the Internet zone
        # 4 is the Restricted Sites zone
        # CHANGING THE SUBKEY VALUE "2500" TO DWORD 0 ENABLES PROTECTED MODE FOR THAT ZONE.
        # IN THE CODE BELOW THAT VALUE IS WITHIN THE "SetValueEx" FUNCTION AT THE END AFTER "REG_DWORD".
        """
        try:
            keyVal = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1'
            key = OpenKey(HKEY_CURRENT_USER, keyVal, 0, KEY_ALL_ACCESS)
            SetValueEx(key, "2500", 0, REG_DWORD, 0)
        except Exception:
            print("Failed to enable protected mode")
    

    你可以用Java写同样的代码。Check here for more help !!!

    【讨论】:

    • 谢谢迪内什!我只是想知道我在设置功能时的语法是否有问题。如果我要使用其他功能(例如,ignoreZoomSetting、initialBrowserUrl 等...),我猜它们不会那么好用。
    • @tic 我在 IE 上遇到了同样的问题。这就是我写自定义关键字的原因。我认为你的语法是正确的,但不知何故它不适用于 IE。
    • 很遗憾,我无法更新注册表,因为我没有管理员权限。关于 Python 中的 SeleniumLibrary,这在使用“创建 Webdriver”关键字而不是“打开浏览器”时有效。我相信这个问题与 SeleniumLibrary 的 Java 端口无关,它只有“打开浏览器”关键字。
    【解决方案2】:

    直接在机器人框架中执行此操作:

    ${ie_dc} =      Evaluate  
        ...         sys.modules['selenium.webdriver'].DesiredCapabilities.INTERNETEXPLORER 
        ...         sys, selenium.webdriver
    ${ieOptions} =  Create Dictionary  ignoreProtectedModeSettings=${True}
    Set To Dictionary   ${ie_dc}  se:ieOptions  ${ieOptions}
    Open Browser    ${url}  ie  desired_capabilities=${ie_dc}
    

    在某些时候,ignoreProtectedModeSettings 被放置在功能字典中的 se:ieOptions 字典中。如果您调试 Selenium 的 Python 库,特别是 webdriver/remote/webdriver.py 并查看 start_session 中的响应,您可以看到这一点。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,并尝试使用 Dinesh Pundkar 的答案,但没有奏效。最后,我找到了这个https://stackoverflow.com/a/63543398/3297490,它就像一个魅力。

      需要注意的一点是,在运行 vbs 脚本后,我检查了 IE 设置,保护模式设置仍按原样显示,但并没有真正恢复到正常水平。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-01
        • 2021-11-14
        • 2017-12-02
        • 1970-01-01
        • 1970-01-01
        • 2016-04-06
        • 2013-09-06
        • 1970-01-01
        相关资源
        最近更新 更多