【问题标题】:Exit For Loop in Robot Framework在机器人框架中退出 For 循环
【发布时间】:2020-02-19 08:10:12
【问题描述】:

使用机器人框架,我正在尝试创建一个 FOR 循环,其中从列表中选择一个随机值。选择随机值后,打开该值的页面,然后我想验证该方可用的数据等。如果值匹配,则循环应该退出。

目前,我可以选择一个随机值并转到该值页面,但由于 FOR 循环从列表中找到另一个值而导致脚本失败,因此无法执行进一步的操作。

@{ORGANISATIONAL_NAME}  JSK MARKETING  KEDARNATH COMOTRADE  PONDICHERRY SRI LAKSHMI

View Basic Info of the Party
    ${value} =  Evaluate  random.choice($ORGANISATIONAL_NAME)  random
    input text  ${SEARCH_BAR}  ${value}
    log to console  \nvalue: ${value}
    click element  ${SEARCH_BUTTON}
    log  ${value}
    Run Keyword If  '${value}' == 'JSK MARKETING'  click element  ${JSK_MARKETING}
     ...  ELSE IF  '${value}' == 'KEDARNATH COMOTRADE'  click element  ${KEDARNATH_COMOTRADE}
     ...  ELSE IF  '${value}' == 'PONDICHERRY SRI LAKSHMI'  click element  ${PONDICHERRY_SHRI_LAKSHMI}
     ...  ELSE  log to console  condition didn't met
    FOR  ${value}  IN  @{ORGANISATIONAL_NAME}
        log to console  ${value}
        click element  ${BASIC_INFO}
        wait until page contains  Summary
        Exit For Loop If  '${value}' == 'JSK MARKETING'
        click element  ${BASIC_INFO}
        wait until page contains  Summary
        Exit For Loop If  '${value}' == 'KEDARNATH COMOTRADE'
        click element  ${BASIC_INFO}
        wait until page contains  Summary
        Exit For Loop If  '${value}' == 'PONDICHERRY SRI LAKSHMI'
    END

需要对从列表中选择的随机值执行验证。

【问题讨论】:

  • 您遇到的错误是什么?
  • @WojtekT 错误是首先,它取值说 PONDICHERRY SRI LAKSHMI 并且当 FOR 循环执行时它取另一个值说 JSK 营销 link

标签: python python-3.x selenium robotframework


【解决方案1】:

您的问题是您首先选择了一个随机值。 然后按照创建的顺序迭代列表。

for 循环的原因是什么? 因为我不明白你在循环中要做什么

编辑:

如果您的列表中只有这 3 个值,您可以这样做:

View Basic Info Of The Party
    ${value} =  Evaluate  random.choice($ORGANISATIONAL_NAME)  random
    Input Text  ${SEARCH_BAR}  ${value}
    Log To Console  \nvalue: ${value}
    Click Element  ${SEARCH_BUTTON}
    Log  ${value}
    Run Keyword If  '${value}' == 'JSK MARKETING'  Click Element  ${JSK_MARKETING}
    ...  ELSE IF    '${value}' == 'KEDARNATH COMOTRADE'  Click Element  ${KEDARNATH_COMOTRADE}
    ...  ELSE IF    '${value}' == 'PONDICHERRY SRI LAKSHMI'  Click Element  ${PONDICHERRY_SHRI_LAKSHMI}
    Log To Console  ${value}
    Click Element  ${BASIC_INFO}
    Wait Until Page Contains  Summary

如果您要在列表中有更多值,并且只想在这 3 种情况之一中执行操作,请尝试这样做:

View Basic Info Of The Party
    ${value} =  Evaluate  random.choice($ORGANISATIONAL_NAME)  random
    Input Text  ${SEARCH_BAR}  ${value}
    Log To Console  \nvalue: ${value}
    Click Element  ${SEARCH_BUTTON}
    Log  ${value}
    Run Keyword If  '${value}' == 'JSK MARKETING'  Click Element  ${JSK_MARKETING}
    ...  ELSE IF    '${value}' == 'KEDARNATH COMOTRADE'  Click Element  ${KEDARNATH_COMOTRADE}
    ...  ELSE IF    '${value}' == 'PONDICHERRY SRI LAKSHMI'  Click Element  ${PONDICHERRY_SHRI_LAKSHMI}
    ...  ELSE  Log To Console  condition didn\'t met
    Run Keyword If  '${value}' == 'JSK MARKETING' or '${value}' == 'KEDARNATH COMOTRADE' or '${value}' == 'PONDICHERRY SRI LAKSHMI'     Run Keywords
    ...  Log To Console  ${value}   AND
    ...  Click Element  ${BASIC_INFO}   AND
    ...  Wait Until Page Contains  Summary

我希望这会有所帮助。

【讨论】:

  • 使用 for 循环的原因是,在选择一个随机值后,我想对该特定方执行数据验证。整个场景是我有一个庞大的不同方数据集,每个方的数据也不同。现在我必须从该数据集中选择一个随机方并对其进行验证。
  • 尝试了这两个代码,现在它在搜索派对后直接失败,因为现在它跳转到 Click Element ${BASIC_INFO} 而感谢先点击派对,即 '${value}' == 'KEDARNATH COMOTRADE' 点击元素 ${KEDARNATH_COMOTRADE}。 [链接] (ibb.co/T1sggF6)
  • 我想我知道你的问题是什么。让我们关注代码 2。最后 3 行在开头包含 ...,因此最后 3 行依赖于检查末尾的关键字 Run Keywords(第 11 行)。我想你没有把... 放在开头,这就是为什么最后三行总是被执行的原因。它可以在您的日志中看到,因为最后 3 行应该出现在日志的 Run Keywords 键中,如下所示:link
  • 重新格式化代码后问题依然存在。现在发生的情况是,在随机选择后它没有点击聚会页面链接,浏览器被关闭,结果是通过。 [链接] (ibb.co/cKBYgh3)
  • 不满足任何条件,因为pondicherry sri lakshmi 珠宝与pondicherry sri lakshmi 不匹配。在这种情况下代码是正确的
猜你喜欢
  • 2020-12-29
  • 2016-03-15
  • 2016-11-18
  • 2017-04-20
  • 2017-07-02
  • 2021-07-17
  • 2018-08-09
  • 2020-11-15
  • 1970-01-01
相关资源
最近更新 更多