51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1061|回复: 1
打印 上一主题 下一主题

自动化测试框架之Coded UI

[复制链接]
  • TA的每日心情
    奋斗
    2021-8-16 14:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-4-20 15:07:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Coded UI Test是Visual Studio 2010对于Testing Project(测试工程)提供的关于UI自动化测试的框架,支持Win32,
    Web,WPF等UI的自动化测试,是一个非常强大的测试工具,Coded UI支持自动录制和手动编写。

    Coded UI能干什么
    打开应用程序
    模拟用户操作
    获取UI元素
    UITestControl:所有UI类库的基类
    Web测试类库:HtmlControls(HtmlButton,HtmlDiv等)
    Winform测试类库:WinControls(WinMenu,WinWindow等)
    WPF测试类库:WpfControls(WpfCheckBox,WpfPane等)
    Coded UI主要类库
    UITestControl:所有UI类库的基类
    Web测试类库:HtmlControls(HtmlButton,HtmlDiv等)
    Winform测试类库:WinControls(WinMenu,WinWindow等)
    WPF测试类库:WpfControls(WpfCheckBox,WpfPane等)
    Coded UI结果验证类
    Assert类:  Microsoft.VisualStudio.QualityTools.UnitTesting

    常用方法:IsTrue(),IsFalse(),IsNull(),AreEqual()


    手动编写Coded UI Test
    原理:手动编写与自动录制原理相同,但是更为灵活。自动录制生成的代码过于繁乱,不易修改维护,
    手动编写的话易于管理,可以按照实际情况运用一些常见的编程方法,对代码做一些定制,可读性更强,
    提取公共部分写成通用函数使得代码易于维护。

    思路:

    明确你想要测试的程序,根据程序控件的一些属性捕获到这个控件

    根据测试需求对控件做一些操作

    根据需求提取控件信息,控件状态、文本信息、控件定义等

    将提取信息与期望信息匹配

    新建Coded UI Test 工程

    同上新建一个Test工程,添加Coded UI Test
    在CodedUITest1.cs文件中编写测试方法。每个测试方法的方法体上面都要有[TestMethod],为了方便
    VS2010自带的方法执行工具发现该方法。
    手动获取页面控件要使用IE Developer Tools


    Coded UI一些操作方法

         调用HtmlControls类库(后面有示例程序)

    打开浏览器:调用BrowserWindow类来实例化一个BrowserWindow对象
    BrowserWindow browser = BrowserWindow.Launch(new Uri("http://www.baidu.com"))



    获取Div控件:调用HtmlDiv类实例化一个HtmlDiv对象
    HtmlDiv header = new HtmlDiv(browser);

    header.SearchProperties[HtmlDiv.PropertyNames.Class] = "s_tab";



    获取文本框:调用HtmlEdit类来实例化一个HtmlEdit对象
    HtmlEdit txtKeyWord = new HtmlEdit(browser);

    txtKeyWord.SearchProperties[HtmlEdit.PropertyNames.Class] = "s_ipt";



    获取按钮:调用HtmlInputButton类实例化一个HtmlInputButton对象
    HtmlInputButton btnSubmit = new HtmlInputButton(browser);

    btnSubmit.SearchProperties[HtmlInputButton.PropertyNames.Class] = "s_btn";



    依次类推,在代码中会有智能提示,或者查询MSDN网站来查找相应方法



    鼠标点击:Mouse.Click(HtmlControl);
    Mouse.Click(btnSubmit);



    验证结果:调用Assert类的各种方法
    Assert.IsTrue(imgLogo.Exists, "Logo doesn't exist!");



    等待浏览器加载完成:BrowserWindow .WaitForControlReady();


    让程序等待:System.Threading.Thread.Sleep(毫秒数);


    示例程序:验证百度搜索成功
    复制代码
    1. public class CodedUITest1
    2.     {
    3.         [TestMethod]
    4.         public void VarifyFeatures()
    5.         {
    6.             #region 打开浏览器获取控件

    7.             //调用BrowserWindow打开浏览器,默认打开IE
    8.             BrowserWindow browser = BrowserWindow.Launch(new Uri("http://www.baidu.com"));
    9.             
    10.             //打开其他浏览器方法
    11.             //Process p = Process.Start(@"C:\Users\XXX\AppData\Roaming\360se6\Application\360se.exe", "http://www.baidu.com");
    12.             //BrowserWindow browser = BrowserWindow.FromProcess(p);
    13.             
    14.             
    15.             //根据属性找到搜索文本框
    16.             HtmlEdit txtKeyWord = new HtmlEdit(browser);
    17.             txtKeyWord.SearchProperties[HtmlEdit.PropertyNames.Class] = "s_ipt";

    18.             //根据属性找到“百度一下”按钮
    19.             HtmlInputButton btnSubmit = new HtmlInputButton(browser);
    20.             btnSubmit.SearchProperties[HtmlInputButton.PropertyNames.Class] = "s_btn";

    21.             //根据属性找到header div
    22.             HtmlDiv header = new HtmlDiv(browser);
    23.             header.SearchProperties[HtmlDiv.PropertyNames.Class] = "s_tab";

    24.             #endregion

    25.             #region 各种验证

    26.             //等待浏览器加载完成
    27.             browser.WaitForControlReady();

    28.             //输入测试关键字
    29.             txtKeyWord.Text = "软件测试";

    30.             //点击“百度一下按钮”
    31.             Mouse.Click(btnSubmit);

    32.             //验证页面跳转后搜索框里面的关键字正确
    33.             Assert.IsTrue(txtKeyWord.ValueAttribute.Contains("软件测试"));
    34.             
    35.             //关闭浏览器
    36.             browser.Close();
    37.             #endregion
    38.         }
    39.     }
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 00:44 , Processed in 0.062988 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表