51Testing软件测试论坛

标题: SilkTest在Silk4NET中如何完成CS程序所有对象的遍历 [打印本页]

作者: 沅芷湘兰    时间: 2013-11-28 16:45
标题: SilkTest在Silk4NET中如何完成CS程序所有对象的遍历
如下代码主要完成了如下操作:
        在XP系统自带的“计算器”上将所有对象遍历并把对象类型打印出来
        进行对象类型的匹配(如:SilkTest.Ntf.PushButton)
        进行对象属性的匹配(如:caption)
        通过正则表达式来进行对象过滤(如:regexs)
        在匹配好的对象上完成了PushButton的点击(如:数字按钮)
        取得计算器上显示的数字并打印出来(如:TextField)

下面是完整的代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using SilkTest.Ntf;
  5. using System.Text.RegularExpressions;

  6. namespace Silk4NETFoundAllObject
  7. {
  8.     [SilkTestClass]
  9.     public class findAllCSObject
  10.     {
  11.         private readonly Desktop _desktop = Agent.Desktop;

  12.         [TestInitialize]
  13.         public void Initialize()
  14.         {
  15.             BaseState baseState = new BaseState();
  16.             baseState.Execute();
  17.         }

  18.         [TestMethod]
  19.         public void TestMethod1()
  20.         {
  21.             Window 计算器 = _desktop.Window("@caption='计算器'");
  22.             计算器.SetActive();
  23.             计算器.PushButton("@caption='4'").Select();
  24.             计算器.PushButton("@caption='+'").Select();
  25.             计算器.PushButton("@caption='3'").Select();
  26.             计算器.PushButton("@caption='='").Select();
  27.             计算器.PushButton("[18]").Select();
  28.             计算器.PushButton("@caption='3'").Select();
  29.             计算器.PushButton("@caption='='").Select();
  30.             //计算器.TextField().SetText("21. ");
  31.             //Assert.AreEqual("21. ", 计算器.TextField().Text);

  32.             //定义一个正则表达式的模板
  33.             String regexs = @"^\d$";
  34.             //获取所有的计算器的list对象
  35.             List<TestObject> lc = 计算器.GetChildren();
  36.             //定义一个TestObject对象
  37.             TestObject tobj;
  38.             //获取计算器的list的总数
  39.             int lcc = lc.Count;
  40.             Console.WriteLine(lcc);
  41.             //以list总数去遍历整个list对象
  42.             for (int i = 0; i < lcc; i++)
  43.             {
  44.                 //获取lc的i个对象
  45.                 tobj = lc[i];
  46.                 String tobjs;
  47.                 String tobjt;
  48.                 //获取tobj对象的类型,如“SilkTest.Ntf.PushButton”
  49.                 tobjt = tobj.GetType().ToString();
  50.                 //获取tobj对象的属性值,如“caption”
  51.                 tobjs = tobj.GetProperty("caption").ToString();
  52.                 Console.WriteLine(tobjt);
  53.                 Console.WriteLine(tobjs);
  54.                 //判断对象类型等于"SilkTest.Ntf.PushButton"
  55.                 if (tobjt == "SilkTest.Ntf.PushButton")
  56.                 {
  57.                     //通过正则表达式来判断是否为数字,如果为数字则按下按钮
  58.                     if (Regex.IsMatch(tobjs,regexs))
  59.                     {
  60.                         //点击对象类型为"SilkTest.Ntf.PushButton",对象属性为tobjs的对象
  61.                         计算器.PushButton("@caption='" + tobjs + "'").Select();
  62.                     }
  63.                     
  64.                 }
  65.                 //判断对象类型等于"SilkTest.Ntf.TextField"
  66.                 else if(tobjt == "SilkTest.Ntf.TextField")
  67.                 {
  68.                     //获取该对象的text属性值
  69.                     string TF = 计算器.TextField("@caption='" + tobjs + "'").Text;
  70.                     Console.WriteLine("TF shi:" + TF);
  71.                 }
  72.                
  73.                 //Console.WriteLine("windowid:" + tobjs.ToString());
  74.             }
  75.         }
  76.     }
  77. }
复制代码





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2