您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
Selenium測試Ajax程序
作者:網絡轉載 發(fā)布時間:[ 2013/4/9 17:01:28 ] 推薦標簽:

  如果我們點擊Get按鈕后,直接判斷頁面是否返回”Hello World”時,這樣會出錯,因為現(xiàn)在還沒有立即返回。

  這時我們需要使用Selenium的WaitForCondition方法,這個方法會不停的去判斷一個javascript表達式是否是true. 知道返回true時才繼續(xù)執(zhí)行。

  我們可以看到,我們需要寫js表達式,如果我們需要判斷的很復雜,那么些表達式也是一件很麻煩的事,同時這個方法經過我的使用,它對IE的支持不好。那么有沒有更好的方法呢?

  更好的方法判斷Ajax調用是否結束

  事實上我們測試Ajax程序大的麻煩,是想上面一樣來判斷Ajax調用是否結束,上面我們是判斷頁面中如果出現(xiàn)”Hello World”,證明Ajax已經結束了,那么什么是更好的方法呢,我們經常使用的javascript的類庫是JQuery,如何判斷JQuery的Ajax調用已經結束了呢?

  經過研究發(fā)現(xiàn)當沒有ajax調用時,Jquery.active=0.

  所以,我們可以使用這個的表達式判斷Ajax是否返回。

  selenium.WaitForCondition("selenium.browserbot.getCurrentWindow().jQuery.active == 0", "50000");

  是不是整個世界清靜多了
image

  下面我收集了判斷其它類庫的Ajax活動狀態(tài)

  jQuery: “jQuery.active”

  Prototype: “Ajax.activeRequestCount”

  Dojo: “dojo.io.XMLHTTPTransport.inFlight.length”

  ASP.NET AJAX:

  Javascript:

  function isInAsyncPostBack() {

  instance = Sys.WebForms.PageRequestManager.getInstance();

  return instance.get_isInAsyncPostBack();

  }

  C#

  selenium.WaitForCondition(“!selenium.browserbot.getCurrentWindow().isInAsyncPostBack()”, “1000″);

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd