QTP 使用DOM識別樹形節點

2021-05-22 23:05:33 字數 2171 閱讀 8756

web測試中,不可避免的會遇到樹形節點的識別。如下就是通過

iedev*******

抓下的乙個

page

的樹形結構。

qtp在對樹形結構的節點進行識別時,可以採用

dom(document object model

文件物件模型

)模型,在

dom中,每個網頁元素都對應著乙個物件。樹結構中每乙個元素都被稱為乙個節點。

qtp可以通過

dom來訪問

html

標籤。在

qtp中,訪問

dom主要通過使用

page

測試物件的

object

屬性來進一步訪問。

」熱門**排行

」下的標題。

**如下:

'獲得貼吧首頁熱門**排行下的所有標題

set obj=browser("

貼吧").page("

貼吧page").webtable("table").object

set odiv= obj.getelementsbytagname("div")

num=0

for i=0 to odiv.length-1

ifodiv(i).innertext="

熱門轉貼排行

" 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'

將獲得的標題儲存到

datatable

中next

end if

next

set obj=nothing

set odiv=nothing

在這段**中,就是通過訪問貼吧頁面下的

webtable

物件的object

屬性來進一步訪問

html

標籤的。

我們用到了幾個方法和屬性:

getelementsbytagname()

方法:返回帶有指定標籤名的物件的集合。

nextsibling

屬性:返回處於同級節點下某個元素之後緊跟的元素。

childnodes

屬性:返回指定節點的子節點的節點列表。

我們借助於

iedev*******

,可以發現,

」熱門**排行

」這一列中,

」熱門**排行」是

div的

innertext

,而底下的標題則分別是ul的

innertext

,因此要訪問到

ul的節點列表,就需要用到

nextsibling

屬性。最後程式執行的結果在

report

的run-time data table

中:dom還有很多方法和屬性,之前提到了

nextsibling

,那麼還有

previousibling

;以及nodename

,nodetype

,nodevalue

等等。關於

nodename

,nodetype

,nodevalue

;很多人可能還有很多混淆,這裡做些總結:

nodetype:

返回節點的型別,

1為元素,

2為屬性,

3為文字,

8注釋,9文件

nodename:

返回節點的名稱,元素返回的是標籤名稱,屬性返回的是屬性名稱,文字返回的是

#text

(innertext

),文件返回的是

#document

nodevalue:

返回當前節點的值,文字節點返回文字值,屬性節點返回屬性值,標籤和文件節點返回

null

其他的一些方法和屬性待大家自己學習

dom後了解。如果大家熟悉

dom的方法和屬性,在利用

qtp做

web測試時,將會很有益處。

QTP訪問DOM的方法

qtp支援直接訪問dom document object model 可以通過dom來訪問html標籤。在qtp中,訪問dom是通過使用page測試物件的object屬性來進一步訪問的,例如下面的指令碼獲取到google主頁中的 on error resume next set doc browse...

QTP的物件識別技術

在我們在做自動化的時候,經常會遇到的一種情況就是,在同乙個頁面裡,出現相同型別和名稱的物件時,一般需要依賴額外的屬性來區分這些相同的物件。在 qtp裡共有3類這樣的順序標識。1.順序標識 ordinal indentifiers location index creationtime 其中creat...

qtp識別驗證碼

花了兩天時間才完整的完成識別驗證碼的登入操作,在網上看到很多關於驗證碼識別的方法,但是我用的qtp版本比較高階,所以還是要自己花心思研究。po上我的識別驗證碼的詳細歷程 一 讀取瀏覽器中的驗證碼1.開啟瀏覽器登入介面 2.啟動qtp,不勾選web 然後選擇modify,output types設定為...