我怎样才能写一个循环来重复检查元素文本直到它改变?

问题描述 投票:0回答:1

我需要编写如下代码:

  • 在执行操作之前验证元素文本
  • 执行动作1
  • 在执行 action1 后验证元素文本更改/更新

元素文本更改/更新需要一分钟,我如何编写循环来检查直到元素文本更改?

是否有我可以为此使用的关键字,或者我如何在机器人框架中使用循环?

robotframework
1个回答
1
投票

SeleniumLibrary 中有一个关键字专门用于此 - 等待元素包含,如果您知道目标字符串。

如果您不知道 - 有一个互惠关键字

Wait Until Element Does Not Contain
,您可以在其上传递旧值。


如果这些由于某种原因无法达到目的,您可以编写您的特定版本;算法是:

  1. 获取当前值
  2. 获取当前时间(以毫秒为精度)并命名为start_time;将相同的值存储在另一个变量 current_time
  3. 开始一个
    WHILE
    循环,条件为
    (current_time - start_time) < some_max_wait_time
    值;在循环内:
    1. 获取当前值,并将其与所需值进行比较(或者 - 与 1 中的起始值不同。)
    2. 如果为真/成功 -
      BREAK
      while 循环
    3. 如果为假 -
      Sleep
      100/300/1000 毫秒(无论您的上下文的合理时间是什么)
    4. 获取当前时间,存入current_time
    5. 回到3.
  4. 您必须知道 while 循环之外的检查是否成功 - 如果循环是关键字中的最后一件事,您可以在其中调用
    RETURN
    ;如果不是-您可以使用布尔值来传达这一点,如果不是,则
    FAIL

这个的一个变体是作为while条件

current_value == 'desired one'
(或
!= 'staring one'
)并检查它是否超过了循环内的最大等待时间,如果是这样就调用
Fail

这种方法更通用——例如,我用它来检查数据库更改、文件、消息总线系统等

© www.soinside.com 2019 - 2024. All rights reserved.