【问题标题】:Robot FrameWork:: How to Count Arguments?Robot FrameWork:: 如何计算参数?
【发布时间】:2018-01-15 23:10:42
【问题描述】:

有没有办法动态地计算传递给关键字的参数数量以及是否可以打印 Log ${Argument1}、${Argument2} 等参数?例如有大约 10 个复选框可供选择。但在 TC QA 中,他/她只选择几个项目作为参数发送给关键字。因此,我们想要捕获所有参数列表以创建一个 List 并遍历它们以选择正确的复选框

Add Arguments to List
    [Arguments]   arg1  arg2  arg3  arg4  arg5 
    ${NoOf_Arguments}  =   #TODO: no idea how to count no of arguments
    @{List_To_Create}=  Create List
    : For ${item}  IN RANGE ${NoOf_Arguments}
    \   append to list  ${List_To_Create} ${item}
    [Return]  ${List_To_Create}  

【问题讨论】:

  • 将所有参数作为列表传递[Arguments] @{args},然后将它们作为列表项处理。您可以计算它们,记录列表等。
  • 如果硬编码五个参数,则必须传递五个参数,否则机器人会抛出错误。您是在问如何支持可变数量的参数?
  • @BryanOakley,在我的例如它是 5 .. 但实时它可以超过 1。即像 n 个变量 .. 所以我想知道 A. 如何找到传递了多少个参数。 B. 如何将它们全部放入 List

标签: python robotframework


【解决方案1】:

Robot 通过将[Arguments] 中的最后一项作为列表变量来支持可变数量的参数。

例如:

*** Keywords ***
A keyword
    [Arguments]  @{args}
    ${count}=  get length  ${args}
    log  you passed in ${count} arguments
    :FOR  ${arg}  IN  @{args}
    \  log  argument: ${arg}
    [return]  ${count}    

*** Test cases ***
Example
    ${result}=  A keyword  arg1  arg2  arg3
    should be equal as numbers  ${result}  3

    ${result}=  A keyword  arg1  arg2  arg3  arg4  arg5
    should be equal as numbers  ${result}  5

【讨论】:

  • 请告诉我这个关键字是否正确!! (我们无权执行这就是原因)选择所需的租户组 [文档] 单击复选框按钮以选择给定的值 [参数] @{Tenant_Groups_To_Select} :For ${item} IN RANGE @{Tenant_Groups_To_Select} \ Selenium2Library.Select复选框 //*[@id="ctl00_PageBody_TenantsList"]/tbody/tr/td/label[normalize-space(text())='${item}']/preceding-sibling::input
  • @bbk:我觉得不合适。 :FOR ... IN RANGE 需要一个数字作为参数,而您提供的是参数列表。你想要IN,而不是IN RANGE
猜你喜欢
  • 2021-01-16
  • 2014-09-06
  • 2020-12-24
  • 2019-11-03
  • 2017-12-30
  • 2016-02-21
  • 1970-01-01
  • 2021-04-19
  • 2018-10-10
相关资源
最近更新 更多