【问题标题】:How would you write this in a loop in Robot Framework你会如何在 Robot Framework 的循环中写这个
【发布时间】:2023-01-28 00:37:35
【问题描述】:

所以我目前正在学习机器人框架,而不是使用重复代码,我正在尝试利用循环来使我的代码更易于维护。不幸的是,我不知道如何解决这个问题,我想把它放到一个循环中。这是一系列带有下拉答案的问题,每次测试运行时我都想选择不同的答案。我已经尝试了几个 foor 循环选项,但它们都不起作用。基本上每个循环都应单击下拉菜单并选择一个随机答案,直到所有问题都得到回答。

Check if User can change "Company" information
    Scroll Element Into View                ${USER_MENU_SCROLL_TO_COMPANY_MENU}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_COMPANY_EDIT_BUTTON}
    ${random_description1} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION1})
    click element                           ${random_description1}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_2}
    ${random_description2} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION2})
    click element                           ${random_description2}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_3}
    ${random_description3} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION3})
    click element                           ${random_description3}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_4}
    ${random_description4} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION4})
    click element                           ${random_description4}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_DROP_DOWN_5}
    ${random_description5} =                 Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION5})
    click element                           ${random_description5}

我试过这样的事情,但它想连接我的变量中的值。

FOR ${i} IN RANGE 1 5
    ${random_description} = Evaluate random.choice(@{USER_MENU_DROP_DOWN_QUESTION}+${i})
    click element ${USER_MENU_CLICK_DROP_DOWN_}+${i}
    click element ${random_description}
    sleep 1s
END

【问题讨论】:

    标签: selenium automated-tests robotframework web-testing


    【解决方案1】:

    您的问题是构建变量的名称。 您可以将变量作为列表的列表。

    这是我对您当前代码的解决方案的看法:

    FOR ${i} IN RANGE 1 5
        ${random_description} = Evaluate random.choice(@{USER_MENU_DROP_DOWN_QUESTION${i}})
        click element ${USER_MENU_CLICK_DROP_DOWN_${i}}
        click element ${random_description}
        sleep 1s
    END
    

    【讨论】:

    • 您编写的解决方案是我尝试过的,但 Robot Framework 不支持嵌套变量。
    【解决方案2】:

    经过一些修补,我找到了解决方案。也许有一种更有效的写法,如果有人有任何建议,我想知道那是什么。 我的解决方案:

    Check if User can change "Company" information
    Scroll Element Into View                ${USER_MENU_SCROLL_TO_COMPANY_MENU}
    sleep                                   1s
    click element                           ${USER_MENU_CLICK_COMPANY_EDIT_BUTTON}
    ${random_answer1} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_0})
    ${random_answer2} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_1})
    ${random_answer3} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_2})
    ${random_answer4} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_3})
    ${random_answer5} =                      Evaluate  random.choice(@{USER_MENU_DROP_DOWN_QUESTION_4})
    @{random_answers} =     Create List     ${random_answer1}     ${random_answer2}      ${random_answer3}       ${random_answer3}       ${random_answer4}
    FOR    ${question}    IN    @{random_answers}
        click element    ${USER_MENU_CLICK_NEXT_DROP_DOWN}
        Click Element    ${question}
        Sleep    1s
    END
    

    【讨论】:

      猜你喜欢
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 2012-05-11
      • 2021-06-17
      • 2018-06-21
      • 2017-12-30
      • 2015-09-12
      相关资源
      最近更新 更多