2011-07-04 82 views
2

我一直在使用wicketTester.getServetResponse.getDocument來獲取當前頁面的文本進行測試,結果發現在ajax請求後它被設置爲ajax響應,而不是整個頁面。我可以獲得當前Wicket頁面的來源嗎?

有什麼辦法可以得到整個呈現頁面的表示,因爲瀏覽器會在ajax操作之後看到它?

+0

我現在看到,這真的是一個重複http://stackoverflow.com/questions/6413022/how-do-i-query-the-text-of-an-element-component-using-wickettester - 其中頁面是根元素的文本。 –

回答

2

使用WicketTester,您可以模擬Ajax調用並查看您的應用程序發送正確的Ajax響應。但它並沒有真正的運用ajax。

所以我不認爲有一種方法可以從WicketTester中獲得。

如果您確實需要一直測試應用程序到UI,包括渲染上的Ajax/javascript效果,那麼您可能需要在測試的這一部分使用類似Selenium的東西。

+0

它不是在執行我之後的Ajax,而是在獲取頁面源之後,例如,我用Ajax顯示了一個面板。鑑於頁面狀態是在服務器上舉行,我認爲這相當於如果我刷新整個頁面將會提供什麼? –

+0

頁面狀態不會保存爲html中的整個呈現頁面,我不認爲WicketTester提供了在ajax響應之後獲取html當前狀態的方法。 –

+0

我很害怕這種情況。也許我將不得不模擬獲取當前URL。 –

1

思考的檢票方式,我希望下面的方法應該工作:

  1. #startPage(YourPage.class)
  2. 做一些Ajax調用
  3. #startPage(wicketTester.getLastRenderedPage())
  4. wicketTester.getLastRenderedPageAsString()

這個想法是:你啓動一個頁面進行測試,第一個響應是c完成頁面響應,然後執行一些Ajax調用,這些調用會更改某些模型,然後以實例的形式啓動最後一個呈現的頁面 - 這樣它將使用來自Ajax調用的更新模型來呈現頁面。

+0

其中getLastRenderedPageAsString是getServletResponse.getDocument?所以這是執行操作,然後刷新現在修改的頁面。我會給它一個去感謝。 –

1

問題在於,您可以將任何Javascript放入對Ajax調用的響應中。但是如果你不想處理這個問題,你可以保存原始的整頁DOM,迭代Ajax響應中的對象,在完整DOM中通過id找到它們,並用新版本替換它們。

這將是多麼有用,我不知道,我的猜測會不會很。所以我可能會和Selenium一起去。

+0

除了找到組件的難度之外,我對WicketTester一直很滿意。也許我會回到正軌道上的正則表達式比賽... –

相關問題