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

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

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

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

  更好的方法判斷Ajax調(diào)用是否結(jié)束

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

  經(jīng)過研究發(fā)現(xiàn)當(dāng)沒有ajax調(diào)用時,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)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd