Web自動化測試原理
目前有很多Web UI自動化測試框架,如WatiN,Selinimu,WebDriver等,這些框架都可以操作Web中的控件,模擬用戶輸入,點擊等操作,實現Web自動化測試。其實這些工具的原理都一樣,都是通過調用IE COM接口和HTMLDOM 對IE瀏覽器以及WEB測試對象的操作。 本文介紹脫離這些自動化測試框架,通過AutoIT直接使用IE COM接口結合HTML DOM對IE瀏覽器以及WEB對象進行自動化測試的方法。
1.IE常用操作
首先新建一個IE COM對象,配置IE窗口屬性,模擬用戶同時跳轉至相應的頁面同時進行相應操作。訪問頁面時,需要等待頁面加載完成后再進行操作。這里我們可以使用IE COM的BUSY屬性檢查瀏覽器是否處于加載狀態,再進行相應的操作。示例代碼如下:
2.利用DOM操作測試對象
現在已經會使用IE COM組件來對IE瀏覽器進行自動化的操作,但是對于瀏覽器頁面中的測試對象IE COM是無法對其進行操作的,這個時候就需要使用HTML DOM來對其進行操作。
2.1 HTML DOM簡介
HTML DOM是HTML Document Object Model(文檔對象模型)的縮寫,它將網頁中的各個元素都看作一個個對象,從而使網頁中的元素也可以被計算機語言獲取或者編輯。 常用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[].當前元素包含的子元素。
2.2 種方法對比
2.2.1getElementByID
2.2.2getElementsByName
getElementsByName( )方法可返回帶有指定名稱的對象的集合。
同樣獲取網頁元素name后,即可通過getElementsByName方法獲取定位對象,并對其進行操作(與getElementByID返回的單個對象不同,getElementsByName返回的是一個元素的集合,需要通過遍歷對象才能對其進行操作):
2.2.3getElementsByTagName
getElementsByTagName( )方法通過查找整個HTML文檔中的任何HTML元素,傳回指定名稱的元素集合。 因此也可使用getElementsByTagName獲取TAG名,通過得到相同類型的元素及在遍歷中進行判斷控件類型并進行操作:

2.3 利用FORM名來獲取對象元素
使用FORM名來獲取對象元素會大大簡化我們的腳本。首先查看百度的搜索框對應的FORM名,得到FORM名為f:
通過如下簡單的腳本,同樣可以達到相同的效果:
2.4 訪問Web頁面的Script腳本變量
通過DOM還可以直接訪問Web頁面中的JavaScript或者VBScript中的變量。首先打開百度的源文件:
可以看到在百度源文件的JavaScript腳本中定義了一個變量為k,并且賦值為d.f.wd(實際上就是百度搜索框對象)。那么可以直接使用parentWindow來訪問Web頁面Script中的變量k,對百度搜索框進行自動測試:
3 總結
本文主要介紹了利用IE的COM以及HTML DOM來自動化IE瀏覽器,以及對瀏覽器的一些控件對象進行自動化的操作,包括IE瀏覽器常用操作、利用DOM操作測試對象、利用FORM名來獲取對象元素、訪問Web頁面的Script腳本變量等。 直接操作IE COM來實現Web自動化,不僅有助于有助于理解Web頁面自動化測試框架的運行原理,還能脫離這些自動化測試框架自己快速建立一個輕量型的自動化測試程序,從而真正的提高測試效率。
原文鏈接:http://lovesoo.org/web-automation-testing-principle.html
posted on 2014-08-13 09:49 順其自然EVO 閱讀(892) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄 、selenium and watir webdrivers 自動化測試學習