我是新來的自動化Web測試,我目前正從舊的Selenium RC實現遷移到Ruby中的Selenium 2。有沒有辦法停止命令的執行直到頁面被加載,類似於Selenium RC中的「wait_for_page_to_load
」?如何在Selenium 2中實現wait_for_page_to_load?
回答
嘗試使用Javascript通知您!
我創建了幾個方法,通過我們的JavaScript庫進行檢查,並等待查看頁面是否完成加載DOM,並且所有ajax請求都完成。這是一個示例代碼片段。您將需要使用的JavaScript將取決於您的庫。
Selenium::WebDriver::Wait.new(:timeout => 30).until { @driver.execute_script("[use javascript to return true once loaded, false if not]"}
我然後包裹在一個clickAndWait
方法點擊元件並調用waitForDomLoad和waitForAjaxComplete這些方法。只是爲了好的措施,clickAndWait之後的下一個命令通常是一個waitForVisble
元素命令,以確保我們位於正確的頁面上。
# Click element and wait for page elements, ajax to complete, and then run whatever else
def clickElementAndWait(type, selector)
@url = @driver.current_url
clickElement(type, selector)
# If the page changed to a different URL, wait for DOM to complete loading
if @driver.current_url != @url
waitForDomLoad
end
waitForAjaxComplete
if block_given?
yield
end
end
如果使用capybara
,每當你爲page.should have_content("foo")
測試,水豚不會立即如果頁面沒有內容(還)失敗,但會等待一段時間,看看Ajax調用會改變這種狀況。
所以基本上:在你之後click
,你想立刻檢查have_content("some content that is a consequence of that click")
。
我沒有使用水豚。我只使用webdriver。 – deep 2012-01-07 18:33:16
我固定了很多,我在該部門加入這一行有問題開始我的司機
driver.manage.timeouts.implicit_wait = 20
這基本上使每一個失敗的司機叫你做重試最大20秒拋出之前之後例外,這通常足以讓AJAX完成。
拯救了另一個生命 – nurettin 2013-05-13 12:13:50
- 1. 如何在Selenium 2中實現關鍵字「Unselect Frame」?
- 2. 如何在Selenium中實現IFrame和LoadableComponent?
- 3. 在selenium webdriver中實現'waitForNewWindow'
- 4. 如何在Symfony 2中實現標籤?
- 5. 如何在Struts 2中實現分頁
- 6. 如何在Code Igniter中實現RSS 2?
- 7. ExceptionHub是否打破了Selenium的wait_for_page_to_load命令
- 8. 如何實現離子2
- 9. 如何在Selenium Webdriver框架中實現DriverSetup類
- 10. 在Ionic 2中實現GoogleMap.OnInfoWindowClickListener
- 11. 如何實現HTTP在角2
- 12. 如何在Ionic 2/Angular 2項目中實現Videogular?
- 13. 如何在Selenium WebDriver(Selenium 2)中運行Firebug?
- 14. 實現在角2
- 15. 如何在Delphi中實現XIRR實現?
- 16. Selenium WebDriverBackedSelenium實現紅寶石
- 17. 如何在Java上的Selenium的WebElement上實現滾動?
- 18. Selenium 2 WebDriver實現不正確處理可擴展菜單
- 19. 在Selenium WebDriver中實現InternetExplorerDriver時出現NoSuchElementException
- 20. Angular 2+中的WebComponent實現
- 21. 在JavaScript中如何實現?
- 22. 如何在Java中實現
- 23. 如何在PHP中實現
- 24. 如何在ASP.NET中實現
- 25. 如何在JNI中實現
- 26. 如何在OOP中實現?
- 27. 如何在Java中實現
- 28. 如何在JavaScript中實現?
- 29. 如何在Java中實現
- 30. **如何在Python中實現?
不完整的答案,但請參閱http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_WebDriver_fails_to_find_elements_/_Does_not_block_on_page_loa進行一些討論。 – 2011-12-31 13:59:39
我已經嘗試過「等待」,但這不工作我似乎只是在Windows機器上的問題,測試用例在Linux上正常工作 – deep 2012-01-07 18:32:18