我进行了一次测试,必须消除作为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秒。
如何检查该覆盖层是否消失,然后立即继续?
答案 0 :(得分:4)
您可以尝试使用“等待关键字成功”,以允许您自定义重试超时。如果要确保在适当的时间内从显示中删除警告,则特别有用。
Wait Until Keyword Succeeds ${retry} ${retry-interval} Element Should Not Be Visible ${warning-overlay-div}
$ {retry} =执行检查的总时间
$ {retry-interval} =两次重试之间的时间
(我本来只是个评论,但直到50rep时我才能这样做-这可能是值得尝试的东西)