QTP——使用DOM識(shí)別樹(shù)形節(jié)點(diǎn)進(jìn)行Web測(cè)試
在Web測(cè)試中,不可避免的會(huì)遇到樹(shù)形節(jié)點(diǎn)的識(shí)別。如下就是通過(guò)IEDevToolBar抓下的一個(gè)page的樹(shù)形結(jié)構(gòu)。
QTP在對(duì)樹(shù)形結(jié)構(gòu)的節(jié)點(diǎn)進(jìn)行識(shí)別時(shí),可以采用DOM(Document Object Model文檔對(duì)象模型)模型,在DOM中,每個(gè)網(wǎng)頁(yè)元素都對(duì)應(yīng)著一個(gè)對(duì)象。樹(shù)結(jié)構(gòu)中每一個(gè)元素都被稱(chēng)為一個(gè)節(jié)點(diǎn)。QTP可以通過(guò)DOM來(lái)訪問(wèn)HTML標(biāo)簽。在QTP中,訪問(wèn)DOM主要通過(guò)使用page測(cè)試對(duì)象的object屬性來(lái)進(jìn)一步訪問(wèn)。
舉個(gè)簡(jiǎn)單的例子:在百度貼吧首頁(yè),我們需要獲得”熱門(mén)轉(zhuǎn)帖排行”下的標(biāo)題。
代碼如下:
'獲得貼吧首頁(yè)熱門(mén)轉(zhuǎn)帖排行下的所有標(biāo)題 Set oBj=Browser("貼吧").Page("貼吧page").WebTable("Table").Object Set oDIV= oBj.getElementsByTagName("DIV") num=0 For i=0 to oDIV.length-1 If oDIV(i).innertext="熱門(mén)轉(zhuǎn)貼排行" then For j=0 to oDIV(i).NextSibling.ChildNodes.length-1 num=num+1 Datatable.SetCurrentRow(num) Datatable.Value("innertext")=oDIV(i).NextSibling.ChildNodes(j).innertext '將獲得的標(biāo)題儲(chǔ)存到Datatable中 Next End If Next Set oBj=Nothing Set oDIV=Nothing |
在這段代碼中,就是通過(guò)訪問(wèn)貼吧頁(yè)面下的WebTable對(duì)象的Object屬性來(lái)進(jìn)一步訪問(wèn)HTML標(biāo)簽的。
我們用到了幾個(gè)方法和屬性:
getElementsByTagName()方法:返回帶有指定標(biāo)簽名的對(duì)象的集合。
NextSibling屬性:返回處于同級(jí)節(jié)點(diǎn)下某個(gè)元素之后緊跟的元素。
ChildNodes屬性:返回指定節(jié)點(diǎn)的子節(jié)點(diǎn)的節(jié)點(diǎn)列表。
我們借助于IEDevToolBar,可以發(fā)現(xiàn),“熱門(mén)轉(zhuǎn)帖排行”這一列中,“熱門(mén)轉(zhuǎn)帖排行”是DIV的innertext,而底下的標(biāo)題則分別是UL的innertext,因此要訪問(wèn)到UL的節(jié)點(diǎn)列表,就需要用到NextSibling屬性。
最后程序運(yùn)行的結(jié)果在Report的Run-Time Data Table中:
DOM還有很多方法和屬性,之前提到了NextSibling,那么還有PreviouSibling;以及NodeName,NodeType,NodeValue等等。
關(guān)于NodeName,NodeType,NodeValue;很多人可能還有很多混淆,這里做些總結(jié):
Nodetype:返回節(jié)點(diǎn)的類(lèi)型,1為元素,2為屬性,3為文本,8注釋?zhuān)?文檔
Nodename:返回節(jié)點(diǎn)的名稱(chēng),元素返回的是標(biāo)簽名稱(chēng),屬性返回的是屬性名稱(chēng),文本返回的是#text(innertext),文檔返回的是#document
Nodevalue:返回當(dāng)前節(jié)點(diǎn)的值,文本節(jié)點(diǎn)返回文本值,屬性節(jié)點(diǎn)返回屬性值,標(biāo)簽和文檔節(jié)點(diǎn)返回null
其他的一些方法和屬性待大家自己學(xué)習(xí)DOM后了解。如果大家熟悉DOM的方法和屬性,在利用QTP做Web測(cè)試時(shí),將會(huì)很有益處。
posted on 2011-10-21 16:34 順其自然EVO 閱讀(1135) 評(píng)論(0) 編輯 收藏