Robotframework:在循环中点击web-elemnt经常找不到元素

Robotframework: Clicking web-elemnt in loop often fails to find an element

我已经为 RF 和 Selenium2Library 创建了关键字。它应该通过定期单击某个其他元素来等待某个元素,这将更新该元素应该出现的区域。我用它来等待邮箱中的邮件。

问题是经常无法找到 "renew element" 并点击某些循环迭代,但它存在于屏幕截图中。知道为什么会发生吗?

def check_if_element_appeared(self, element_locator, renew_locator, renew_interval=10, wait_interval=300):        
    if not self.is_visible(renew_locator):
        raise AssertionError("Error Message")
    start_time=int(time())
    scan_time = start_time
    if not self.is_visible(element_locator):
        while int(time())<=start_time+wait_interval:
            if int(time()) >= scan_time + renew_interval:
                scan_time = int(time())
                self.click_element(renew_locator)
                if self.is_visible(element_locator):
                    break
        if not self.is_visible(element_locator):
            raise AssertionError("Error Message")
        self._info("Message")
    else:
        self._info("Current page contains element '%s'." % element_locator)

不应为此目的使用 Selenium2Library 的关键字 Wait Until Page Contains ElementWait Until Element Is Visible

*** Test cases ***
Your Test Case
  Prerequisite steps
  Wait Until Page Contains Element  ${locator}
  Succeeding steps

编辑: 以下是您的 Python 代码在纯 Robot 语法中的样子。

${iteration}=  Evaluate  ${wait_interval} / ${renew_interval}
: FOR   ${i}  IN RANGE  0  ${iteration}
\   Click Element   ${renew_locator}
\   Sleep  1
\   ${is_visible}=  Run Keyword And Return Status  Element Should Be Visible  ${element_locator}
\   Exit For Loop If  ${is_visible}
\   Run Keyword If  '${is_visible}' == 'False'  Sleep  ${renew_interval}
Click Element  ${element_locator}