2011-03-04 158 views
3

我有一個rspec測試使用webdriver點擊一個按鈕...點擊按鈕後,頁面從未完全加載(這是預期的和正確的行爲)。點擊按鈕後,我想等待2秒鐘,然後導航到另一個URL ...儘管頁面尚未加載。我不想拋出一個錯誤,因爲頁面沒有加載,我想忽略它,並繼續,如果一切都很好。該頁面不應該加載,這是預期的和正確的行爲。Selenium Webdriver - 如何在點擊後跳過等待頁面加載並繼續

我怎樣才能避免等到超時,其次,我該如何避免拋出一個使測試失敗的錯誤。

謝謝!

回答

0

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秒鐘,然後繼續

0

你爲什麼不嘗試使用一個簡單的一招「等待() 「後waitForPageToLoad(),這使得它忽視硒前面的命令,從來沒有失敗這一步

0

如果你使用的RSpec的期望方法:

expect { 
    Thread.new() { 
    sleep(2) 
    raise RuntimeError 
    } 
    theButton.click() 
}.to raise_error 
0

發送‘Enter’鍵李nk或按鈕,而不是點擊,webdriver不會等待頁面加載並立即返回(這是C#中,只是翻譯成Ruby):

element.SendKeys(Key,Return);

相關問題