我正在使用机器人框架在本机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.
有谁能告诉我为什么会出现这个错误?我试过调试但没有结果。
答案 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}
应该可以正常工作。他们仍将被视为决定。