我运行了一个测试,我必须忽略一个覆盖整个页面的 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: Message: unknown error: Element
<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位于其之上。
好的,所以我添加了一项检查,以确保在点击 dismiss-warning 和点击 某物之间 warning-overlay-div 消失-否则。我尝试了多种变体,但这三种都给出了相同的结果
(来自日志)
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 秒。
如何检查此叠加层是否已消失,然后立即继续?
最佳答案
您可以尝试使用“等待关键字成功”,为自己设置自定义重试超时。如果您想确保在适当的时间内从显示中删除警告,则特别有用。
Wait Until Keyword Succeeds ${retry} ${retry-interval} Element Should Not Be Visible ${warning-overlay-div}
${retry} = 执行检查的总体时间
${retry-interval}</strong> = 每次重试之间的时间
(我本可以将其作为评论,但在我拥有 50 名代表之前我不能这样做 - 这只是可能值得尝试的事情)
关于selenium - 机器人框架: wait until element disappears,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53560067/