【发布时间】:2019-02-12 14:40:43
【问题描述】:
所以有一个网站,有时一个元素会妨碍你,一个弹出窗口的问题。
我想单击该元素并摆脱弹出窗口。
但如果弹出窗口(带有元素)没有出现,我也想继续测试。没有任何干扰。
那么处理这个问题的最佳方法是什么?
你不能只说:
Click Element newBtn LightGray noIcon
因为你不知道它是否在那里。
【问题讨论】:
标签: robotframework
所以有一个网站,有时一个元素会妨碍你,一个弹出窗口的问题。
我想单击该元素并摆脱弹出窗口。
但如果弹出窗口(带有元素)没有出现,我也想继续测试。没有任何干扰。
那么处理这个问题的最佳方法是什么?
你不能只说:
Click Element newBtn LightGray noIcon
因为你不知道它是否在那里。
【问题讨论】:
标签: robotframework
检查元素是否存在,并且只点击true;将Run Keyword And Return Status 与Element Should Be Visible 结合使用:
${is visible}= Run Keyword And Return Status Element Should Be Visible your_locator
Run Keyword If ${is visible} Click Element your_locator
如果元素需要一些时间才能出现,您可以改用Wait Until Element Is Visible。
【讨论】:
为了验证定位器的存在,您必须使用带有超时参数的 WAIT UNTIL PAGE CONTAINS ELEMENT。我们必须让 DOM 或网页完成加载(几秒钟),然后才能开始对当前页面进行验证。
# *you click a link here....*
${check_popup}= Run Keyword and Return Status Wait Until Page Contains Element locator 6s
Run Keyword If ${check_popup} == 'True' Click Element locator
如果你注意到,超时参数是可选的,它有一个默认值,但我将它更改为 6 秒。如果您的网页由于性能或其他原因加载缓慢,那么您需要增加超时时间。尽量不要使用ELEMENT SHOULD BE VISIBLE,因为如果弹出/页面或DOM尚未完全加载,此关键字将失败。
【讨论】:
Wait Until Page Contains Element 将简单地失败 - 测试用例也是如此;它不返回真/假。
Wait Until Page Contains Element 派上用场的原因,因为它的默认等待超时时间为 5-10 秒。但是如果我们使用Element should be Visible,同时页面或DOM仍在加载,那么运行将失败,因为该元素尚不可用。所以它在验证元素的存在之前就失败了。
Wait Until ... 关键字的目的。问题是 OP 的问题是“单击一个仅有时存在的元素” - 在某些情况下它不是;然后 - 案例将在此组合中失败,只是因为在此运行中它没有出现。
Run Keyword and Return Status,正如你已经给出的那样。但我的解决方案是与Wait Until Page Contains Element 一起使用,谢谢。