机器人框架:无效的参数规范:只有最后一个参数可以是kwargs

时间:2016-09-23 12:22:28

标签: android automation robotframework

我正在使用机器人框架在本机Android应用程序的对象列表中查找字符串。我对自定义关键字的输入是:

${Test_Result}=  RUN KEYWORD AND CONTINUE ON FAILURE  VERIFY STRING IN LIST   My Name    &{main_locator}   &{list_locator}

在我的关键字中,我使用了一个名为

的关键字
VERIFY STRING IN LIST
   [Arguments]  ${String}  &{main_locator}   &{list_locator}
   ${relative_object}=GET RELATIVE OBJECT  &{main locator}   &{list_locator} <position>

该位置描述第二个对象是出现在第一个对象之下还是之上。

现在,我将在水平列表中找到所需的文本

${result}=  Scroll To Horizontally  ${relative_object}  text=${sring}

当我执行测试用例时,它显示以下错误

Creating keyword 'VERIFY STRING IN LIST' failed: Invalid argument specification: Only last argument can be kwargs.

有谁能告诉我为什么会出现这个错误?我试过调试但没有结果。

2 个答案:

答案 0 :(得分:0)

这可能与您正在使用的运行关键字和继续失败关键字有关。 Robot Framework用户指南在Running keywords中说明了这一点:

  

动态库有一个特殊的run_keyword(别名runKeyword)方法   用于执行其关键字。当动态库中的关键字是   在测试数据中使用,Robot Framework使用库的run_keyword   让它执行的方法。此方法需要两个或三个参数。   第一个参数是一个包含关键字to的名称的字符串   以与get_keyword_names返回的格式相同的格式执行。该   第二个参数是给予关键字的列表或参数数组   在测试数据中。

     

可选的第三个参数是一个字典(Java中的映射)   传递给关键字的可能的免费关键字参数(** kwargs)。看到   有动态库的免费关键字参数部分了解更多详情   关于将kwargs与动态测试库结合使用。

这实际上意味着您无法将任何内容传递给您使用运行关键字

运行的关键字

当Robot Framework期望包含字符串和两个词典的列表时,关键字名称后面的参数是一个字符串和两个词典。

这是我尝试过的快速测试,这有助于您:

*** Variables ***
&{main_locator}    cat=kissa    dog=koira
&{list_locator}    foo=bar    baz=blaah

*** Test Cases ***
SO
    ${parameter_list}=    Create List    My Name    ${main_locator}   ${list_locator}
    Log                   ${parameter_list}
    ${Test_Result}=       RUN KEYWORD AND CONTINUE ON FAILURE  VERIFY STRING IN LIST   @{parameter_list}

*** Keywords ***
VERIFY STRING IN LIST
   [Arguments]  ${String}  ${main_locator}   ${list_locator}
   Log    ${String}
   Log    ${main_locator}
   Log    ${list_locator}

答案 1 :(得分:0)

  

[参数] $ {String}&amp; {main_locator}&amp; {list_locator}

&amp;作为一个论点将它视为** args,如

def verify_string_in_list(string, **main_locator, **list_locator):

您只需要使用$

传递它们
  

[参数] $ {String} $ {main_locator} $ {list_locator}

${Test_Result}=  RUN KEYWORD AND CONTINUE ON FAILURE  VERIFY STRING IN LIST   My Name    ${main_locator}   ${list_locator}

应该可以正常工作。他们仍将被视为决定。