Robotframework 如何避免在从";调用关键字时出现TypeError;运行关键字If";(机器人框架)

Robotframework 如何避免在从";调用关键字时出现TypeError;运行关键字If";(机器人框架),robotframework,Robotframework,我在.py文件中创建的另一个字典中有一个嵌套字典。 当我这样称呼它的时候 FOR ${key} IN @{keys} I fill "${key}" tab on Applicant page with "${data}[${key}]" data END 它工作得非常好。但是,如果我用这个电话 Run Keyword If $ADD_TO_BANKING_KEY in $keys I add Applicant

我在.py文件中创建的另一个字典中有一个嵌套字典。 当我这样称呼它的时候

FOR    ${key}    IN    @{keys}
    I fill "${key}" tab on Applicant page with "${data}[${key}]" data
END 
它工作得非常好。但是,如果我用这个电话

Run Keyword If    $ADD_TO_BANKING_KEY in $keys    I add Applicant to Banking with "${data}[${ADD_TO_BANKING_KEY}]" data
我总是会遇到一个错误“TypeError:预期参数1是字典或类似字典的,改为get string。”当我试图在“I add applicator to Banking with…”函数中将该参数用作字典时

“${data}[${ADD_TO_BANKING_KEY}]”示例:{'Member No.:'DO_NOT_CHECK','Benefit':'Regular','Reason Opened':'radio'}

我如何解决这个问题并以正确的方式进行? 谢谢大家!

更新: 第一个功能:

I add Applicant to Banking with "${data}" data
    Log To Console    \#\#\# I add Applicant to Banking with "${data}" data
    I fill "Add To Banking" tab on Applicant page with "${data}" data
I input "${value}" to "${elementName}" element in "${tabName}" tab on "${pageName}" page
    [Documentation]    Input ``value`` to ``elementName`` element in ``tabName`` tab on the ``pageName`` page
    Log To Console    \#\#\# I input "${value}" to"${elementName}" element in "${tabName}" tab on "${pageName}" page
    ${tempLocator}=    Get Locator From DOM    ${RETAIL_DOM}    ${pageName}    ${elementName}    ${tabName}
    SeleniumExtendedResource.Input Value    ${tempLocator}    ${value}
第二个功能:

I fill "${tabName}" tab on Applicant page with "${data}" data
    Log To Console    \#\#\# I fill "${tabName}" tab on Applicant page with "${data}" data
    @{keys}=    Get Dictionary Keys    ${data}
    FOR    ${key}    IN    @{keys}
        I input "${data['${key}']}" to "${key}" element in "${tabName}" tab on "Applicants" page
    END
有一个地方是失败的

 @{keys}=    Get Dictionary Keys    ${data}
第三项职能:

I add Applicant to Banking with "${data}" data
    Log To Console    \#\#\# I add Applicant to Banking with "${data}" data
    I fill "Add To Banking" tab on Applicant page with "${data}" data
I input "${value}" to "${elementName}" element in "${tabName}" tab on "${pageName}" page
    [Documentation]    Input ``value`` to ``elementName`` element in ``tabName`` tab on the ``pageName`` page
    Log To Console    \#\#\# I input "${value}" to"${elementName}" element in "${tabName}" tab on "${pageName}" page
    ${tempLocator}=    Get Locator From DOM    ${RETAIL_DOM}    ${pageName}    ${elementName}    ${tabName}
    SeleniumExtendedResource.Input Value    ${tempLocator}    ${value}

我认为您还需要向我们显示发生类型错误的关键字,因为这似乎就是问题所在。我已经附上了代码。为什么我最初没有这样做,是因为当我在没有“Run关键字If”的情况下调用这个函数时,它可以正常工作。${data}[${ADD_TO_BANKING_KEY}]:{'Member No.:'do_not_CHECK','Benefit':'Regular','Reason Opened':'radio'}可能这被视为字符串检查${data}变量是否为标准的robot框架字典string@Dev这是一个Python字典。如果我调用“我将申请人添加到银行”,并使用“不”Run关键字If“它被视为字典,而不是字符串。我认为您还需要向我们显示发生类型错误的关键字,因为这似乎是问题所在。我已附上代码。为什么我最初没有这样做,是因为当我在没有“Run关键字If”的情况下调用这个函数时,它可以正常工作。${data}[${ADD_TO_BANKING_KEY}]:{'Member No.:'do_not_CHECK','Benefit':'Regular','Reason Opened':'radio'}可能这被视为字符串检查${data}变量是否为标准的robot框架字典string@Dev这是一个Python字典。如果我调用“我将申请人添加到银行”,而不调用“Run关键字If”,它将被视为字典,而不是字符串。