在使用QTP測試WEB頁面時,經常需要利用測試對象中的Object屬性來通路和操作DOM,是以,QTP自動化測試工程師非常有必要掌握一些常用的DOM知識。
QTP支援直接通路DOM(Document Object Model),可以通過DOM來通路HTML标簽。在QTP中,通路DOM是通過使用Page測試對象的Object屬性來進一步通路的。
下面就列舉了一些常用的DOM屬性、方法和集合:
常用DOM 屬性
● className.同一樣式規則的元素用相同的類名。可以通過className快速過濾出一組類似的元素。
● document.用于指向包含目前元素的文檔對象。
● id.目前元素的辨別。如果文檔中包含多個相同id的元素,則傳回一個數組。
● innerHTML.用于指向目前元素的開始标記和結束标記之間的所有文本和HTML标簽。
● innerText.用于指向目前元素的開始标記和結束标記之間的所有文本和HTML标簽。
● offsetHeight, offsetWidth.元素的高度和寬度。
● offsetLeft, offsetTop.目前元素相同對于父親元素的左邊位置和頂部位置。
● outerHTML.目前元素的開始标記和結束标記之間的所有文本和HTML标簽。
● outerText.目前元素的開始标記和結束标記之間的所有文本,但不包括HTML标簽。
● parentElement.目前元素的父親元素。
● sourceIndex.元素在document.all集合中的索引(index)。
● style.元素的樣式表單屬性。
● tagName.目前元素的标簽名。
● title.在IE中,代表元素的tool tip文本。
常用DOM 方法
● click().模拟使用者對目前元素的滑鼠點選。
● contains(element).用于判斷目前元素是否包含指定的元素。
● getAttribute(attributeName, caseSensitive).傳回目前元素所包含的某個屬性,參數attributeName為屬性名、caseSensitive表示是否大小寫敏感。
● setAttribute(attributeName, value, caseSenstive). 設定目前元素的屬性。
常用DOM 集合
● All[].目前元素中包含的所有HTML元素的數組。
● children[].目前元素包含的子元素。
例如下面的腳本擷取到我們網站的所有A标簽的InnerText
msgbox Browser("使用者登入_獵聘獵頭網:LieTou.com").Page("使用者登入_獵聘獵頭網:LieTou.com").Exist(1)
Set Doc=Browser("使用者登入_獵聘獵頭網:LieTou.com").Page("使用者登入_獵聘獵頭網:LieTou.com").Object
For Each Element In Doc.getElementsByTagName("A")
TagName = Element.TagName ' 擷取标簽名
InnerText = Element.innerText ' 擷取inner text
If Trim(InnerText)="删除該段項目經曆" Then
Reporter.ReportEvent 0, TagName, InnerText
End If
Next
如果不知道自己要找的對象屬于哪個類型的Tag我們可以使用:
msgbox Browser("使用者登入_獵聘獵頭網:LieTou.com").Page("使用者登入_獵聘獵頭網:LieTou.com").Exist(1)
Set Doc=Browser("使用者登入_獵聘獵頭網:LieTou.com").Page("使用者登入_獵聘獵頭網:LieTou.com").Object
For Each Element In Doc.all
TagName = Element.TagName ' 擷取标簽名
InnerText = Element.innerText ' 擷取inner text
Reporter.ReportEvent 0, TagName, InnerText
'If Trim(InnerText)="删除該段項目經曆" Then
'End If
Next
擷取某個元素的個數:
Set Doc=Browser("使用者登入_獵聘獵頭網:LieTou.com").Page("基本資訊_個人資料_會員中心_獵聘獵頭網:LieTou.co").WebElement("2012.03-至今平台自動化測試 修改").Object
Dim i
i=0
For Each Element In Doc.getElementsByTagName("A")
TagName = Element.TagName ' 擷取标簽名
InnerText = Element.innerText ' 擷取inner text
Reporter.ReportEvent 0, TagName, InnerText
If Trim(InnerText)="删除該段項目經曆" Then
i=i+1
End If
Next