3

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

是否有一种方法只等待t几秒钟,然后在元素出现时返回 true,否则返回 false?

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

4

3 回答 3

5

你可以这样写一个速记rescue子句:

element_present = browser.element.wait_until_present rescue false
puts "element not present" unless element_present

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

于 2013-01-07T16:33:17.007 回答
3

看起来没有其他方法可以做我正在寻找的东西,

所以这是实现这一目标的最简单方法:

#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
于 2013-01-07T09:20:42.147 回答
1

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

sleep 'your time here' 例如: sleep 20 - 这将等待 20 秒。

然后现在检查您的元素:

'你的元素'.exists?- 这将返回真/假

这样你不会得到例外。

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

于 2013-01-07T09:20:30.107 回答