我知道方法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
並不僅僅是TimeoutError
。我仍然喜歡使用它,因爲如果有任何Exception
,那麼假定該元素不存在會更安全。
如果你不想例外下面的代碼就可以得心應手:
睡眠「你的時間在這裏」如:睡眠20 - 這將等待20秒。
然後檢查您的元素現在:
'your element'.exists? - 這將返回真/假
你不會以這種方式得到例外。
另一個最好的方法是根據您的需要編寫您的wait_for_load方法。
無論如何,'睡眠t'選項會迫使我無論睡眠時間爲't'秒。我更願意寫我自己的方法,就像我在答覆中所做的那樣,我只是在幾秒後發佈:) – MichaelR
貌似沒有其他的方法,會做什麼我要找的,
所以這裏是實現這一目標的最簡單的方法:
#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
沒有。這種方法提出了一個例外,這種非特異性的東西肯定是不幸的,但只要寫下自己的擴展名並完成它即可。 – tokland