我是新來的自動化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. 如何在Struts 2中實現分頁
- 2. 如何在Code Igniter中實現RSS 2?
- 3. ExceptionHub是否打破了Selenium的wait_for_page_to_load命令
- 4. 如何實現離子2
- 5. 如何在Selenium Webdriver框架中實現DriverSetup類
- 6. 在Ionic 2中實現GoogleMap.OnInfoWindowClickListener
- 7. 如何實現HTTP在角2
- 8. 如何在Ionic 2/Angular 2項目中實現Videogular?
- 9. 如何在Selenium WebDriver(Selenium 2)中運行Firebug?
- 10. Selenium WebDriverBackedSelenium實現紅寶石
- 11. 如何在Java上的Selenium的WebElement上實現滾動?
- 12. Selenium 2 WebDriver實現不正確處理可擴展菜單
- 13. 在Selenium WebDriver中實現InternetExplorerDriver時出現NoSuchElementException
- 14. 如何在Java中實現
- 15. 如何在Java中實現
- 16. 如何在Java中實現
- 17. **如何在Python中實現?
- 18. 如何在OOP中實現?
- 19. 如何在Java中實現
- 20. 如何在PHP中實現
- 21. 如何實現2個不同的廣告出現在谷底
- 22. Ruby http-2實現:eof如何工作?
- 23. True <2是如何實現的?
- 24. 如何實現pushwoosh離子2
- 25. 如何用Scrum實現CMMI 2級?
- 26. 實現accessoryButtonTappedForRowWithIndexPath:在Swift 2
- 27. 如何在c#中實現泛型多態 - 第2部分?
- 28. 如何在角度2中實現更改菜單
- 29. 如何在Angular 2中實現表單輸入驗證
- 30. 如何在Symfony 2中實現服務類
不完整的答案,但請參閱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