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 Element
或 Wait 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}
我已经为 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 Element
或 Wait 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}