自動化測試 (三) Web自動化測試原理


目前市面上有很多Web UI自動化測試框架,比如WatiN, Selinimu,WebDriver,還有VS2010中的Coded UI等等.  這些框架都可以操作Web中的控件,模擬用戶輸入,點擊等操作,實現Web自動化測試。其實這些工具的原理都一樣,都是通過調用IE COM接口和HTML DOM 對IE瀏覽器以及WEB測試對象的操作。

 

本文介紹脫離這些自動化測試框架。  直接使用.NET提供的shdocvm.dll庫來操作IE瀏覽器,使用mshtml.dll庫來操作IE中的 HTML對象。

閱讀目錄

  1. 優點
  2. 添加引用
  3. 操作IE
  4. 使用IE Develop Toolbar 查看HTML DOM
  5. 操作IE中的HTML元素
  6. 源代碼下載

優點

通過直接操作IE COM來實現Web自動化,能讓你在幾分鍾之內快速建立一個輕量型的自動化測試程序。 大大的提高了測試效率。 也有助於你理解WatiN這些自動化測試框架的運行原理.

添加引用

shdocvm.dll和mshtml.dll這兩個庫的COM組件名字和他們的dll名字不一樣。所以比較難找。

shdocvm.dll 的COM 組件名字叫"Microsoft Internet Controls". 添加引用如下Add References->Com Tab-> Microsoft Internet Controls

mshtml.dll的COM組件名字叫"Microsoft.mshtml", 添加引用如下Add References-> .NET Tab->Microsoft.mshtml

添加完引用后,就可以引用命名空間了

 

using mshtml;
using SHDocVw;

 

操作IE

通過shdocvm.dll中的InternetExplorer對象的屬性和方法, 比如Height,Width。我們能夠操作IE,以便模擬一些用戶的操作,比如調整瀏覽器的大小,刷新頁面等。

 

static void Main(string[] args)
{
InternetExplorer IE = new InternetExplorer();
IE.Visible = true;
object nil = new object();
string CnblogUrl = "http://www.cnblogs.com";
// 打開IE並且打開博客園主頁
IE.Navigate(CnblogUrl, ref nil, ref nil, ref nil, ref nil);
Thread.Sleep(3000);

// 設置IE左上角的位置
IE.Top = 10;
IE.Left = 10;
// 設置IE的高度和寬度
IE.Height = 800;
IE.Width = 1000;
// 導航到百度主頁
Thread.Sleep(3000);
string BaiduUrl = "http://www.baidu.com";
IE.Navigate(BaiduUrl, ref nil, ref nil, ref nil, ref nil);

// 點擊后退按鈕
Thread.Sleep(3000);
IE.GoBack();

// 刷新IE
Thread.Sleep(3000);
IE.Refresh();

// 關閉IE
Thread.Sleep(3000);
IE.Quit();
}

 

使用IE develop toolbar 查看HTML DOM

下節中我們要操作HTML中的元素, 我們先需要知道這些控件的id,  使用IE Develop Toolbar或者firebug可以方便查看控件的id.

按F12啟動IE Develop Toolbar, 或者點擊IE工具欄中的Tools->Develop Tools

 從圖中可以看到博客園中的搜索textbox的id是"q"

 

操作IE中的HTML元素

 模擬一個在博客園首頁進行搜索的場景。 模擬在文本框中輸入數據, 然后點擊"找找看按鈕"。

 我們通過mshtml.dll庫里的getElementById()方法獲得你要操作的HTML元素的引用。 然后你可以操作這個對象,比如輸入值和點擊它

 

static void Main(string[] args)
{
InternetExplorer IE = new InternetExplorer();
IE.Visible = true;
object nil = new object();
string CnblogUrl = "http://www.cnblogs.com";
// 打開IE並且打開博客園主頁
IE.Navigate(CnblogUrl, ref nil, ref nil, ref nil, ref nil);
Thread.Sleep(3000);

// 獲取DOM對象
HTMLDocument doc = (HTMLDocument)IE.Document;

// 博客園主頁上的搜索Textbox的id是 "q"
HTMLInputElement SearchTextBox = (HTMLInputElement)doc.getElementById("q");
SearchTextBox.value = "小坦克";

// 博客園主頁上的"找找看"按鈕的id是"btnBloggerSearch"
HTMLInputElement SearchButton = (HTMLInputElement)doc.getElementById("btnBloggerSearch");
SearchButton.click();
}

 

 運行效果如下:

 

源代碼下載

點擊這里,請用VS2008以上打開

 

 參考書籍:<.NET Test Automation Recipes>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM