【问题标题】:How to programmatically write a while loop in Robot Framework 4.0?如何以编程方式在 Robot Framework 4.0 中编写 while 循环?
【发布时间】:2021-06-17 00:33:33
【问题描述】:

场景 - 我有一个包含 x 个字母(a、b、c、d、e、f)的文件。

我想把这些字母写到一个列表或字典中。该文件可以以任何字母结束,但如果它拾取了最后一个字母并且没有其他字母,则循环必须停止。

每个字母必须单独捕获并附加到列表/字典中,而不是使用诸如文件长度之类的变量,因为我们不知道这一点,而且它总是会改变。

运行循环直到文件为空并将内容添加到列表/字典中。字典可以是{1:a,2:b,3:c,4....}。 也许是使用Exit For Loop If的案例?

【问题讨论】:

  • 框架中没有while循环。您可以做的是使用OperatingSystem 库读取文件,然后用逗号或行将其拆分,并执行FOR 循环以迭代文件的内容。
  • 同意,但是如何确定内容的结束并终止循环。尝试使用 exit for loop if 来检查这一点。 stackoverflow.com/questions/36328595/…
  • 如果它不是一个文件,它是一个有 n 条记录的网站,你需要捕获所有记录,直到你到达所有记录的末尾,所以 records = None 然后退出 for 循环和到那时,您会将所有值存储在列表或字典中
  • 您实际上并没有在 for 循环中读取文件。 Get File 读取文件,您只需将其拆分为一个列表,然后循环直到列表结束。至于网站,它非常依赖于应用程序,如果有链接,您可以获取列表中的所有 Web 元素并循环遍历列表。我认为在大多数情况下,您应该能够获取一个列表,然后是 FOR 循环。

标签: python loops robotframework


【解决方案1】:

框架中没有while 循环。您可以执行以下操作:

如果这是file.txt:

a,b,c,d,e,f

这就是您可以阅读每个字母并将其放入字典的方法。

  1. 读取整个文件。
  2. 根据文件结构拆分。
  3. 遍历拆分得到的列表。
*** Settings ***
Library    OperatingSystem
Library    Collections

*** Test Cases ***
Test
    &{dict}=    Create Dictionary
    ${key}=    Evaluate    0
    ${file}=    Get File    file.txt
    ${splitted}=    Evaluate    """${file}""".split(',')
    FOR    ${letter}    IN    @{splitted}
        ${key}=    Evaluate    ${key} + 1
        Set To Dictionary   ${dict}     ${key}    ${letter}
    END
    Log    ${dict}

至于网络示例,它取决于应用程序,但这是一种通用方法。此测试将打开 Stack Overflow 并获取所有问题,然后记录有关它们的所有内容。它只会获取第一页,但您可以类似地循环 (FOR) 所有页面。

  1. 定义一个匹配所有“记录”的定位器。
  2. 使用Get WebElements 关键字获取记录列表。
  3. 遍历列表并应用逻辑。
*** Settings ***
Library    SeleniumLibrary

*** Test Cases ***
Web Example
    Open Browser    https://stackoverflow.com/questions    Headless Firefox
    ${questions}=    Get WebElements    //*[starts-with(@id, "question-summary-")]
    FOR    ${q}    IN    @{questions}
        Log    ${q.text}
    END
    [Teardown]    Close Browser

【讨论】:

  • 感谢您提供的示例.. 文件示例 - 这有效。应用程序很棘手,因为它只是获取问题列表和正常的 For 循环。我需要找到一个例子来解决,但我的方法是在测试变量之后运行一个带有 if 语句的无限 For 循环。如果变量为 None 或表示结束的值,则运行 Exit for loop 命令以退出循环并继续执行。
  • @Wizard 您可以创建自己的库,在其中可以有一个 while 循环。
猜你喜欢
  • 2021-06-16
  • 2016-07-19
  • 1970-01-01
  • 2015-06-26
  • 2012-07-15
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多