qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          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
            getElementByID( )方法可根據指定的id屬性值得到對象。 首先需要分析頁面,在Chome瀏覽器中選擇相應的網頁元素點擊右鍵選擇"審查元素"(或使用IE Develop Toolbar或者firebug等插件亦可),即可得到頁面控件的ID等信息。  通過getElementByID方法獲取百度搜索框及搜索按鈕對象,并對其進行輸入及點擊操作,從而完成搜索操作。示例代碼如下:
            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 自動化測試學習

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 云浮市| 南投县| 安庆市| 甘德县| 深泽县| 右玉县| 财经| 同江市| 华宁县| 临西县| 东至县| 莱州市| 洛浦县| 栾城县| 云和县| 浦城县| 绥芬河市| 建阳市| 台东市| 阿坝| 江门市| 调兵山市| 社旗县| 分宜县| 武山县| 临泽县| 大田县| 仁布县| 双牌县| 安国市| 龙海市| 汉源县| 河东区| 南岸区| 扎鲁特旗| 湖南省| 潼关县| 洛浦县| 肃北| 凤山市| 黄龙县|