我有一個rspec測試使用webdriver點擊一個按鈕...點擊按鈕後,頁面從未完全加載(這是預期的和正確的行爲)。點擊按鈕後,我想等待2秒鐘,然後導航到另一個URL ...儘管頁面尚未加載。我不想拋出一個錯誤,因爲頁面沒有加載,我想忽略它,並繼續,如果一切都很好。該頁面不應該加載,這是預期的和正確的行爲。Selenium Webdriver - 如何在點擊後跳過等待頁面加載並繼續
我怎樣才能避免等到超時,其次,我該如何避免拋出一個使測試失敗的錯誤。
謝謝!
我有一個rspec測試使用webdriver點擊一個按鈕...點擊按鈕後,頁面從未完全加載(這是預期的和正確的行爲)。點擊按鈕後,我想等待2秒鐘,然後導航到另一個URL ...儘管頁面尚未加載。我不想拋出一個錯誤,因爲頁面沒有加載,我想忽略它,並繼續,如果一切都很好。該頁面不應該加載,這是預期的和正確的行爲。Selenium Webdriver - 如何在點擊後跳過等待頁面加載並繼續
我怎樣才能避免等到超時,其次,我該如何避免拋出一個使測試失敗的錯誤。
謝謝!
WebDriver有一個阻塞API,它會一直等待頁面加載。你可以做的是,通過JavaScript按下按鈕,即觸發其onclick事件。我不熟悉的紅寶石,但在Java這將是:
WebDriver driver = ....; // Init WebDriver
WebElement button = ....; // Find your element for clicking
String script = "if (document.createEventObject){"+
"return arguments[0].fireEvent('onclick');"+
"}else{"+
"var evt = arguments[0].ownerDocument.createEvent('MouseEvents');"+
"evt.initMouseEvent('click',true,true,"+
"element.ownerDocument.defaultView,1,0,0,0,0,false,"+
"false,false,false,1,null);"+
"return !element.dispatchEvent(evt);}" ;
((JavascriptExecutor)driver).executeScript(script, button);
這之後,您可以等待2秒鐘,然後繼續
你爲什麼不嘗試使用一個簡單的一招「等待() 「後waitForPageToLoad(),這使得它忽視硒前面的命令,從來沒有失敗這一步
如果你使用的RSpec的期望方法:
expect {
Thread.new() {
sleep(2)
raise RuntimeError
}
theButton.click()
}.to raise_error
發送‘Enter’鍵李nk或按鈕,而不是點擊,webdriver不會等待頁面加載並立即返回(這是C#中,只是翻譯成Ruby):
element.SendKeys(Key,Return);