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

  如果我們點(diǎn)擊Get按鈕后,直接判斷頁(yè)面是否返回”Hello World”時(shí),這樣會(huì)出錯(cuò),因?yàn)楝F(xiàn)在還沒有立即返回。

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

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

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

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

  經(jīng)過(guò)研究發(fā)現(xiàn)當(dāng)沒有ajax調(diào)用時(shí),Jquery.active=0.

  所以,我們可以使用這個(gè)的表達(dá)式判斷Ajax是否返回。

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

  是不是整個(gè)世界清靜多了
image

  下面我收集了判斷其它類庫(kù)的Ajax活動(dòng)狀態(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″);

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