【问题标题】:Change Browser Capabilities through Robot Framework通过 Robot Framework 更改浏览器功能
【发布时间】:2015-09-12 13:13:09
【问题描述】:

我没有权限在本地更改 IE 设置。我编写了一个 Java 代码来更改 IEDriver 的功能:

 DesiredCapabilities caps = DesiredCapabilities.internetExplorer();    caps.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        caps.setCapability(
                InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
                true);

我想在 Robot Framework 中使用 selenium webdriver 时做同样的事情。我想做这样的事情。但我不知道正确的做法。

*** Keywords ***
Test Browser
    ${options}= Evaluate  sys.modules['selenium.webdriver'].DesiredCapabilities.INTERNETEXPLORER sys,selenium.webdriver
    Call Method    ${options}    add_argument      INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS:True    
    Create WebDriver  Internet Explorer ie_options=${options}

Open Browser To Login Page
    Open Browser    ${LOGIN URL}    ${BROWSER}   
    Maximize Browser Window
    Set Selenium Speed    ${DELAY}
    Login Page Should Be Open

非常感谢!

【问题讨论】:

    标签: selenium-webdriver robotframework


    【解决方案1】:

    DesiredCapabilities 的 Selenium 文档中,列出了可配置的属性。必需的属性是 ignoreProtectedModeSettings 必须设置为 True

    ${dc}   Evaluate    sys.modules['selenium.webdriver'].DesiredCapabilities.INTERNETEXPLORER  sys, selenium.webdriver
    Set To Dictionary   ${dc}   ignoreProtectedModeSettings ${True}
    Open Browser    www.google.com  ie  desired_capabilitie=${dc}
    
    ${s2l}= Get Library Instance    Selenium2Library
    Log Dictionary  ${s2l._current_browser().capabilities}  # actual capabilities
    

    【讨论】:

    • 一些描述可能有助于其他用户更好地理解:)
    • 我希望现在的描述对您有所帮助。
    • 此解决方案适用于版本 IEDriverServer 3.4.0。当我尝试 v. 3.9.0 时,它会忽略 DesiredCapabilities 并且 Capabilities 保持为 ignoreProtectedModeSettings: False
    【解决方案2】:

    对于任何来这里寻找机器人框架内this problem 的解决方案的人:

    Set Chrome Desired Capabilities
        [Documentation]  Create the desired capabilities object with which to instantiate the Chrome browser.
        ${dc}                       Evaluate    sys.modules['selenium.webdriver'].DesiredCapabilities.CHROME  sys, selenium.webdriver
        ${experimental_options}     Create Dictionary      useAutomationExtension   ${False}
        Set To Dictionary           ${dc}       chromeOptions   ${experimental_options}
        Set Global Variable         ${DESIRED_CAPABILITIES}  ${dc}
    

    【讨论】:

    • 请补充说明它是如何解决问题的,而不是只给我们一些代码。
    【解决方案3】:

    正如 Pavol Travnik 提到的,大卫的回答不再有效。在某些时候,ignoreProtectedModeSettings 键被放置在功能字典中的se:ieOptions 字典中。以下代码适用于较新版本的 IEDriverServer:

    ${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}
    

    如果您调试 Selenium 的 Python 库,特别是 webdriver/remote/webdriver.py 并查看 start_session 中的响应,您可以看到这一点。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2021-08-28
      • 2014-05-25
      • 2020-01-18
      • 1970-01-01
      • 2013-09-30
      • 2013-04-29
      • 2021-07-15
      • 2023-02-13
      相关资源
      最近更新 更多