在
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設定為...