C#_自動化測試3_controll IE

來源:互聯網
上載者:User

標籤:style   blog   http   java   color   使用   os   資料   

目前市面上有很多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>

 

附: 自動化測試 系列教程, (連載中, 敬請期待)

自動化測試 (一) 12306火車票網站自動登入工具

自動化測試 (二) 連連看外掛

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

自動化測試 (四) 自動卸載軟體

自動化測試 (五) 讀寫64位作業系統的註冊表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.