首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待元素,而不会在超时时引发异常

等待元素,而不会在超时时引发异常
EN

Stack Overflow用户
提问于 2013-01-07 16:10:40
回答 3查看 1K关注 0票数 3

我知道Element#wait_until_present(t)方法,但是如果这个方法超时,它会抛出一个timeOut异常。

是否有一个方法只等待t秒,如果元素出现,则返回true,否则返回false?

我知道这可以通过一个简单的begin..rescue..end语句来完成,但是我正在寻找不使用异常的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-08 00:33:17

您可以像这样编写一个速记rescue子句:

代码语言:javascript
运行
复制
element_present = browser.element.wait_until_present rescue false
puts "element not present" unless element_present

但是,这确实会在任何Exception上产生false值,而不仅仅是TimeoutError。我仍然更喜欢使用它,因为如果有任何Exception,那么假设该元素不存在会更安全。

票数 5
EN

Stack Overflow用户

发布于 2013-01-07 17:20:42

看起来没有其他方法可以达到我想要的效果,

所以这里是实现这一点的最简单的方法:

代码语言:javascript
运行
复制
#check method for Element#wait_until_present(t) 
def check_if_present(element,t)
    raise ArgumentError, 't must be a number ' unless t.is_a? Numeric
    begin
        element.wait_until_present(t)
        true
    rescue Watir::Wait::TimeoutError
        false
    rescue
        raise "Something wrong with the element"
    end
end
票数 3
EN

Stack Overflow用户

发布于 2013-01-07 17:20:30

如果你不想要一个异常,下面的代码会很方便:

在这里“享受你的时光”例如:睡眠20 --这将等待20秒。

然后现在检查您的元素:

‘'your’..exists?-this将返回true/false

您不会通过这种方式获得异常。

另一种最好的方法是根据需要编写wait_for_load方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14192073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档