我知道这个方法Element#wait_until_present(t)
,但是如果这个方法超时,它会抛出一个 timeOut 异常。
是否有一种方法只等待t
几秒钟,然后在元素出现时返回 true,否则返回 false?
我知道它可以用一个简单的begin..rescue..end
语句来完成,但我正在寻找不使用异常的东西。
我知道这个方法Element#wait_until_present(t)
,但是如果这个方法超时,它会抛出一个 timeOut 异常。
是否有一种方法只等待t
几秒钟,然后在元素出现时返回 true,否则返回 false?
我知道它可以用一个简单的begin..rescue..end
语句来完成,但我正在寻找不使用异常的东西。
你可以这样写一个速记rescue
子句:
element_present = browser.element.wait_until_present rescue false
puts "element not present" unless element_present
然而,这确实会导致false
任何值Exception
,而不仅仅是 with TimeoutError
。我仍然更喜欢使用它,因为如果有的Exception
话,那么假设该元素不存在会更安全。
看起来没有其他方法可以做我正在寻找的东西,
所以这是实现这一目标的最简单方法:
#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
如果您不想要异常,下面的代码会很方便:
sleep 'your time here' 例如: sleep 20 - 这将等待 20 秒。
然后现在检查您的元素:
'你的元素'.exists?- 这将返回真/假
这样你不会得到例外。
另一种最佳方法是根据您的需要编写 wait_for_load 方法。