通过 Robot Framework 更改浏览器功能

Posted

技术标签:

【中文标题】通过 Robot Framework 更改浏览器功能【英文标题】:Change Browser Capabilities through 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

非常感谢!

【问题讨论】:

【参考方案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 中的响应,您可以看到这一点。

【讨论】:

以上是关于通过 Robot Framework 更改浏览器功能的主要内容,如果未能解决你的问题,请参考以下文章

使用 Robot Framework Test 在浏览器中上传文件

Robot Framework 通过pyodbc连接Mysql

robot framework窗口切换

您如何在 Robot Framework 中编写具有多个标识符的动态元素?

Robot Framework之扩展打开不同版本的谷歌浏览器

Robot Framework 验证是不是打开了新的浏览器选项卡