机器人框架:等待元素消失

时间:2018-11-30 15:08:43

标签: selenium selenium-webdriver robotframework

我进行了一次测试,必须消除作为DIV覆盖整个页面的警告。首先,我将单击添加到添加内容的按钮,然后显示警告。最后,我在字段中输入一个字符串

代码看起来像这样

SeleniumLibrary.Click element  add_button
Wait Until Element is visible  warning-overlay-div
SeleniumLibrary.Click element  dismiss-warning
SeleniumLibrary.Click element  something-else

运行此代码会导致错误消息:

  

WebDriverException:消息:未知错误:元素<input type="text" class="upperCaseClass modified" id="something-else" maxlength="15" style="width: 143px; text-transform: uppercase;"> is not clickable at point (230, 679). Other element would receive the click: <div class="warning-overlay-div" style="width: 100%; height: 853px; z-index: 2003;"></div>

也就是说,我不能单击 something-else ,因为 warning-overlay-div 位于其上方。

好,所以我添加了一个检查以确保 warning-overlay-div 在点击 dismiss-warning 和点击东西之间消失了-else 。我尝试了多个变体,但是这三个变体都给出相同的结果

(来自日志)

00:00:15.050KEYWORD SeleniumLibrary . Wait Until Element Is Not Visible ${warning-overlay-div}
00:00:15.003KEYWORD SeleniumLibrary . Wait Until Page Does Not Contain ${warning-overlay-div}
00:00:15.039KEYWORD SeleniumLibrary . Wait Until Page Does Not Contain Element ${warning-overlay-div}

叠加层消失可能需要半秒钟左右的时间,但是如您所见,所有这些都等到它们在15秒后超时才返回成功。我想在 warning-overlay-div 消失后立即继续,而不是等待15秒。

如何检查该覆盖层是否消失,然后立即继续?

1 个答案:

答案 0 :(得分:4)

您可以尝试使用“等待关键字成功”,以允许您自定义重试超时。如果要确保在适当的时间内从显示中删除警告,则特别有用。

 Wait Until Keyword Succeeds  ${retry}  ${retry-interval}  Element Should Not Be Visible  ${warning-overlay-div}   

$ {retry} =执行检查的总时间

$ {retry-interval} =两次重试之间的时间

Time Formats

(我本来只是个评论,但直到50rep时我才能这样做-这可能是值得尝试的东西)