小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

[原創(chuàng)]QTP使用循環(huán)語(yǔ)句等待對(duì)象出現(xiàn)的方法

 楊柳1234 2010-11-19

     本帖子為本人原創(chuàng),轉(zhuǎn)載請(qǐng)注明作者:Cheers . Lee 以及網(wǎng)絡(luò)來(lái)源:

      問(wèn)題產(chǎn)生原因:以飛機(jī)訂票系統(tǒng)(flight4a.exe)為例,如下圖:

[原創(chuàng)]QTP使用循環(huán)語(yǔ)句等待對(duì)象出現(xiàn)的方法

     圖中,Order No編號(hào)的出現(xiàn),只有當(dāng)點(diǎn)擊完Insert Order按鈕等數(shù)秒后,才會(huì)生成.但是具體要等多長(zhǎng)時(shí)間,才會(huì)生成訂單號(hào),這個(gè)等待時(shí)間無(wú)法知道.

     由此,問(wèn)題產(chǎn)生了?

     解決辦法:在QTP腳本中,使用循環(huán)語(yǔ)句等待對(duì)象出現(xiàn).

     腳本如下:(注意紫色部分腳本)

 

Dialog("Login").WinEdit("Agent Name:").Set "Cheers.Lee"
Dialog("Login").WinEdit("Password:").SetSecure "49df4eabed69867d55a22bbcdc7cceb6d10c9abc"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinObject("Date of Flight:").Type "090410"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
Window("Flight Reservation").WinComboBox("Fly To:").Select "London"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "13564   FRA   03:12 PM   LON   03:57 PM   SR     $162.10"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "Cheers.Lee"
Window("Flight Reservation").WinButton("Insert Order").Click
a=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text") 
do  while  a=""
wait 1
a=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text") 
Loop
'msgbox a
Window("Flight Reservation").
Close

 

     當(dāng)然這塊也可以用條件語(yǔ)句:while ...wend; do ... until 來(lái)寫(xiě).

     至此,問(wèn)題解決OK!對(duì)于對(duì)象不存在的解決方法,也可以用此方法來(lái)解決對(duì)象偶爾回放不能識(shí)別的問(wèn)題,再次不再詳述.希望本文起到拋磚引玉的作用.

    最后,將關(guān)于"QTP幾種同步點(diǎn)等待方法"歸納如下(以下內(nèi)容不是原創(chuàng)):

在編寫(xiě)腳本時(shí),經(jīng)常要考慮到2個(gè)步驟之間的時(shí)間間隔問(wèn)題,例如,1. 打開(kāi)www.baidu.com 2. 輸入avepoint。由于網(wǎng)速的不同,打開(kāi)百度網(wǎng)頁(yè)之后會(huì)有一定的延遲,所以1,2兩步之間要有一個(gè)短時(shí)間的等待,可以通過(guò)以下幾種方法實(shí)現(xiàn):
1. 對(duì)象的默認(rèn)等待時(shí)間。
QTP識(shí)別對(duì)象時(shí),會(huì)有一個(gè)默認(rèn)的等待時(shí)間,可以在File-->Settings-->Run-->Object synchronization中設(shè)置,默認(rèn)時(shí)間是20秒,也就是說(shuō)當(dāng)執(zhí)行到第2步時(shí),網(wǎng)頁(yè)還沒(méi)有完全打開(kāi),這樣的話QTP找不到第2步中需要的對(duì)象,那么它會(huì)在20秒內(nèi)不斷的嘗試查找對(duì)象,如果百度這個(gè)網(wǎng)頁(yè)在20秒之內(nèi)完全打開(kāi),那么這個(gè)方法就可行(網(wǎng)頁(yè)全部打開(kāi)的話,第2步所需的對(duì)象就會(huì)被找到),如果超過(guò)20秒還不行的話,請(qǐng)參考下面幾種方式
2. 使用.Sync方法。
還是打開(kāi)百度,輸入Avepoint,可用如下代碼來(lái)實(shí)現(xiàn)
Browser("Browser").Navigate http://www.baidu.com
Browser("Browser").Page("百度").Sync
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "Avepoint"
第2句的意思就是等待百度這個(gè)頁(yè)面完全打開(kāi),才繼續(xù)執(zhí)行下面操作。
3. 第2種方法只能在Web中使用,那么如果其他類(lèi)型的對(duì)象需要等待時(shí)間怎么辦?可以使用QTP系統(tǒng)自帶的同步點(diǎn)功能。
還是上面的例子,在錄制狀態(tài)下,選擇Insert-->Synchronization Point,選擇要同步的對(duì)象,設(shè)置要同步的屬性,我們可以對(duì)對(duì)象的Enable,visible一類(lèi)表示狀態(tài)的屬性做同步點(diǎn),生成如下腳本
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").WaitProperty "visible", True, 100000
這句話的意思就是在100秒的時(shí)間內(nèi),等待WebEdit這個(gè)對(duì)象的visible屬性,只要它的visible屬性變?yōu)閠rue,那么就執(zhí)行下面操作,最后的100000單位是毫秒,如果在100000毫秒(100秒)后還沒(méi)有等到visible = true,直接執(zhí)行下面操作。
4. 利用VBS語(yǔ)句。
Do until Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Exist(5)
    Wait(1)
Loop
判斷WebEdite這個(gè)對(duì)象是否出現(xiàn),如果沒(méi)有出現(xiàn),執(zhí)行Wait(1),如果出現(xiàn),跳出循環(huán)。
5. 死等大法。
就是用Wait()語(yǔ)句設(shè)置等待時(shí)間,死等,比如Wait(10),就是腳本停止10秒,任何操作都不做,10秒之后繼續(xù)往下執(zhí)行操作。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多