51Testing软件测试论坛
标题:
SilkTest在Silk4NET中如何完成CS程序所有对象的遍历
[打印本页]
作者:
沅芷湘兰
时间:
2013-11-28 16:45
标题:
SilkTest在Silk4NET中如何完成CS程序所有对象的遍历
如下代码主要完成了如下操作:
在XP系统自带的“计算器”上将所有对象遍历并把对象类型打印出来
进行对象类型的匹配(如:SilkTest.Ntf.PushButton)
进行对象属性的匹配(如:caption)
通过正则表达式来进行对象过滤(如:regexs)
在匹配好的对象上完成了PushButton的点击(如:数字按钮)
取得计算器上显示的数字并打印出来(如:TextField)
下面是完整的代码:
using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SilkTest.Ntf;
using System.Text.RegularExpressions;
namespace Silk4NETFoundAllObject
{
[SilkTestClass]
public class findAllCSObject
{
private readonly Desktop _desktop = Agent.Desktop;
[TestInitialize]
public void Initialize()
{
BaseState baseState = new BaseState();
baseState.Execute();
}
[TestMethod]
public void TestMethod1()
{
Window 计算器 = _desktop.Window("@caption='计算器'");
计算器.SetActive();
计算器.PushButton("@caption='4'").Select();
计算器.PushButton("@caption='+'").Select();
计算器.PushButton("@caption='3'").Select();
计算器.PushButton("@caption='='").Select();
计算器.PushButton("[18]").Select();
计算器.PushButton("@caption='3'").Select();
计算器.PushButton("@caption='='").Select();
//计算器.TextField().SetText("21. ");
//Assert.AreEqual("21. ", 计算器.TextField().Text);
//定义一个正则表达式的模板
String regexs = @"^\d$";
//获取所有的计算器的list对象
List<TestObject> lc = 计算器.GetChildren();
//定义一个TestObject对象
TestObject tobj;
//获取计算器的list的总数
int lcc = lc.Count;
Console.WriteLine(lcc);
//以list总数去遍历整个list对象
for (int i = 0; i < lcc; i++)
{
//获取lc的i个对象
tobj = lc[i];
String tobjs;
String tobjt;
//获取tobj对象的类型,如“SilkTest.Ntf.PushButton”
tobjt = tobj.GetType().ToString();
//获取tobj对象的属性值,如“caption”
tobjs = tobj.GetProperty("caption").ToString();
Console.WriteLine(tobjt);
Console.WriteLine(tobjs);
//判断对象类型等于"SilkTest.Ntf.PushButton"
if (tobjt == "SilkTest.Ntf.PushButton")
{
//通过正则表达式来判断是否为数字,如果为数字则按下按钮
if (Regex.IsMatch(tobjs,regexs))
{
//点击对象类型为"SilkTest.Ntf.PushButton",对象属性为tobjs的对象
计算器.PushButton("@caption='" + tobjs + "'").Select();
}
}
//判断对象类型等于"SilkTest.Ntf.TextField"
else if(tobjt == "SilkTest.Ntf.TextField")
{
//获取该对象的text属性值
string TF = 计算器.TextField("@caption='" + tobjs + "'").Text;
Console.WriteLine("TF shi:" + TF);
}
//Console.WriteLine("windowid:" + tobjs.ToString());
}
}
}
}
复制代码
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2