51Testing丛书连载:(十二) QTP自动化测试实践

发表于:2008-7-09 17:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈能技    来源:51Testing软件测试网

3.3.2  基于浏览器和DOM对象模型的功能自动化测试工具

        另外一种自动化的功能测试工具是基于浏览器和DOM对象模型开发的,例如Selenium、Watir等,这些测试工具直接访问Web浏览器,利用脚本语言操纵浏览器和Web页面中包含的DOM对象,从而达到模拟用户控制浏览导航、页面元素的操纵等效果,并且直接获取DOM对象的属性,从而获得Web页面元素的各种属性,通过这些属性可判断测试步骤的结果是否正确。图3.3所示的是可作为插件嵌入到Mozilla Firefox浏览器中的Selenium IDE的测试界面。


图3.3  Selenium IDE的测试界面

        HTML DOM(Document Object Model)是一个HTML文档的编程接口,它定义了HTML的标准对象集合,并且定义了标准的访问和操纵HTML对象的方式。HTML DOM接口让测试人员可以访问和操纵HTML文档的内容。图3.4所示的界面是使用了一个名为“IE DOM Inspector”的工具查看到的Web页面中的DOM对象。

 
图3.4  IE DOM Inspector的界面

        如果熟悉和了解DOM的原理,那么完全可以自己动手编写一个基于浏览器和DOM的Web页面自动化测试工具,例如,下面的C#代码就是一个简单的例子:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;
// 引用Microsoft.mshtml的HTML接口
using mshtml;
// 引用IE对象
using SHDocVw;

namespace WebAutomatedTest1
{
    public partial class Form1 : Form
    {
        static AutoResetEvent documentComplete = new AutoResetEvent(false);
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            InternetExplorer ie = null;
            // 启动IE的进程
            Process p = Process.Start("iexplore.exe", "about:blank");
            // 等待一段时间,让IE启动
            Thread.Sleep(3000);
            if (p == null)
            {
                MessageBox.Show("不能启动IE!");
                return;
            }
            SHDocVw.ShellWindows allBrowsers = new SHDocVw.ShellWindows();
            // 附加到IE进程
            int i = 0;
            while (i < allBrowsers.Count && ie == null)
            {
                InternetExplorer browser = (InternetExplorer)allBrowsers.Item(i);
                if (browser.HWND == (int)p.MainWindowHandle)
                    ie = browser;
                ++i;
            }
            if (ie == null)
            {
                MessageBox.Show("不能附加到IE!");
                return;
            }
            ie.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);
            object nil = new object();
             ie.Navigate("http://127.0.0.1:9462/WebUT/default.aspx",refnil,ref nil,ref nil,ref nil);
            documentComplete.WaitOne();
            HTMLDocument Doc = (HTMLDocument)ie.Document;
             HTMLInputElement textBox = (HTMLInputElement)Doc.getElementById("TextBox1");
            textBox.value = "123";
             HTMLInputElement button = (HTMLInputElement)Doc.getElementById("Button1");
            button.click();
            // 验证,如果Label1的值等于123,则表示测试通过
             HTMLSpanElement label = (HTMLSpanElement)Doc.getElementById("Label1");
            if (label.innerText == "123")
            {
                MessageBox.Show("测试通过!");
            }
            else
            {
                MessageBox.Show("测试不通过!");
            }
        }
        private static void ie_DocumentComplete(object pDisp, ref object URL)
        {
            documentComplete.Set();
        }
    }
}


连载一   连载二    连载三   连载四   连载五    连载六   连载七    连载八    连载九    连载十    连载十一

连载十三    连载十四    连载十五    连载十六    连载十七    连载十八  连载十九    连载二十    连载二十一

连载二十二    连载二十三

本文选自:《51Testing软件测试作品系列》之二的QTP自动化测试实践》,本站经电子工业出版社和作者的授权,近期将进行部分章节的连载,敬请期待!

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • susieliu
    2008-7-16 10:43:53

    这与qtp 有嘛关系阿

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号