1
我正在使用watir自動化網站測試,因爲服務器太忙併且彈跳很多,有時我得到"Element is no longer valid"
異常。我可以通過以下方式處理異常嗎?
那麼下面的代碼工作嗎?
def click_button(what, how)
begin
@browser.button(what=>how).click
rescue=>exception
if exception.eql? 'Element is no longer valid'
click_button(what, how)
else
fail_report("Unable to click, '#{exception}'")
end
end
end
這裏fail_report
是報告失敗步驟的另一種方法。我無法測試它,因爲該異常會在20-25次運行中提升一次。
幫助表示讚賞。
我確實需要'watir-webdriver',而且我正在使用最新版本。我沒有引用'Watir.always_locate'。我的方法點擊了特定的元素,並且傳入了'button'唯一的參數標識符。 –
因此,當DOM發生變化時,元素會變得過時。 Watir/Selenium元素存儲與DOM中特定位置關聯的對象引用。當它試圖與該元素進行交互時,但沒有看到它期望的位置時,它會拋出陳舊的元素異常。當您重新加載瀏覽器時,或任何時候從DOM動態刪除任何信息時,都會發生這種情況。 我很好奇看到堆棧跟蹤; 「元素不再有效」是IEDriver消息,而不是Selenium/Watir消息,所以如果它是一個陳舊元素問題,我想知道爲什麼它不像我期望的那樣被Ruby代碼處理。 – titusfortner