Warm tip: This article is reproduced from serverfault.com, please click

loops-如何在Robot Framework中的定位器上一个一个地验证单词?

(loops - How to verify words one by one on a locator in Robot Framework?)

发布于 2020-11-28 15:11:00

我对机器人框架还是有点陌生​​,但是请放心,我一直在阅读它的《用户指南》。我现在只受一个测试用例的困扰。

我确实有一个单词列表,需要在页面上进行验证,大部分是字段标签的德语翻译,如果它们正确显示或完全在元素中找到的话。

我创建了一个列表变量,如下所示:

@ {GERMAN_WORDS} | 贝努泽| Passwort | 仙洞| Transaktionen | 诺蒂兹

我有以下定位器,该定位器包含网页上的文本标签,而我需要验证该定位器:

$ {GENERAL_GERMAN_BOARD} | xpath = // * [@ id =“ generalAndIncidents:generalAndIncidentsPanel”]

我想逐一检查list变量中的每个单词,看看是否在上面的定位器中。

我确实为此创建了以下关键字,但是我可能会遗漏一些东西,因为它调用了list变量的全部内容,而不是一个一个地检查其中的单词:

Block Text Verification
    [Arguments]    ${text_list_variable}    ${locator_to_check}

    Wait Until Element is Visible    ${locator_to_check}

    FOR    ${label}    IN    ${text_list_variable}
        ${labelTostring}    Convert to String    ${label}
        ${isMatching} =    Run Keyword and Return Status    Element Should Contain    ${locator_to_check}    ${labelTostring}
        Log    ${label}
        Log    ${isMatching}
        Exit For Loop If    '${isMatching}' == 'False'
    END 

我得到以下输出:

元素'xpath = // * [@ id =“ generalAndIncidents:generalAndIncidentsPanel”]'应该包含文本'['Benutzer','Passwort','Sendung','Transaktionen','Notiz']',但其文本为。 ...(它列出了我的定位器中的所有文本)

因此,基本上是不一一检查单词。

我在这里做错什么了吗?我在这里尝试这样做是一种不好的方法吗?

如果有人可以向我提示我应该在这里做什么,我将不胜感激!

非常感谢你!

Questioner
oli129
Viewed
11
Todor Minakov 2020-11-29 00:11:16

你犯了一个小而关键的错误-此行中的变量:

FOR    ${label}    IN    ${text_list_variable}

,应使用以下命令进行访问@

FOR    ${label}    IN    @{text_list_variable}

RF中的for-in循环需要1个或多个循环值的参数,并将@list变量扩展为其成员。