基于ui automation的计算器测试例子
2014-01-09 09:31
477 查看
基于ui automation的计算器测试程序
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Windows;
using System.Windows.Automation;
using System.Diagnostics;
namespace TestProject2
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
//Process p = Process.Start(@"E:\Project\WinFormTest\WinFormTest\bin\Debug\WinFormTest.exe");
var desktop = AutomationElement.RootElement; // 先找到根元素,可以认为是桌面
var condition = new PropertyCondition(AutomationElement.NameProperty, "计算器"); // 定义我们的查找条件,名字是test
var window = desktop.FindFirst(TreeScope.Children, condition); // 在桌面的子控件中查找第一个符合条件的窗体。
// AutomationElement btnpane = window.FindFirst(TreeScope.Children,
// new PropertyCondition(AutomationElement.ClassNameProperty, "CalcFrame"));
AutomationElement btn9 = window.FindFirst(TreeScope.Children,
// new PropertyCondition(AutomationElement.NameProperty, "9"));
new PropertyCondition(AutomationElement.AutomationIdProperty, "133"));
AutomationElement btnPlus = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, "+"));
AutomationElement btn3 = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, "3"));
AutomationElement btnEq = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, "="));
List<AutomationElement> ele_list = new List<AutomationElement>();
ele_list.Add(btn9);
ele_list.Add(btnPlus);
ele_list.Add(btn3);
ele_list.Add(btnEq);
InvokePattern invokeptn = null;
foreach (AutomationElement elem in ele_list)
{
invokeptn = (InvokePattern)elem.GetCurrentPattern(InvokePattern.Pattern);
invokeptn.Invoke();
}
AutomationElement result = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.AutomationIdProperty, "403"));
if (result.Equals(12))
{
int t1 = 9;
}
else {
int t2 = 7;
}
//通过ValuePattern设置或者获得TextBox1的值
//ValuePattern vpTextBox1 = (ValuePattern)result.GetCurrentPattern(ValuePattern.Pattern);
//vpTextBox1.SetValue("50");
TextPattern tpTextBox3 = (TextPattern)result.GetCurrentPattern(TextPattern.Pattern);
string results = tpTextBox3.DocumentRange.GetText(-1); //获取textbox3中的值
//AutomationEventHandler eventHandler = new AutomationEventHandler(autoClient.onWindowOpenOrClose);
//Automation.AddAutomationEventHandler(WindowPattern.WindowOpenedEvent, AutomationElement.RootElement, TreeScope.Children, eventHandler);
/*
Condition conditions = new AndCondition(new PropertyCondition(AutomationElement.AutomationIdProperty, resultTextAutoId),
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Text));
AutomationElement btn = window.FindAll(TreeScope.Descendants, conditions)[0];
InvokePattern invokeptn = (InvokePattern)btn.GetCurrentPattern(InvokePattern.Pattern);
invokeptn.Invoke();
var btnCondition = new AndCondition(
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button),
new PropertyCondition(AutomationElement.NameProperty, "ok"));
var button = window.FindFirst(TreeScope.Children, btnCondition);
var clickPattern = (InvokePattern)button.GetCurrentPattern(InvokePattern.Pattern);
clickPattern.Invoke();
*/
}
}
}
最后添加引用UIAutomationClientsideProviders.dll,UIAutomationTypes.dll,UIAutomationClient.dll三个dll的引用即可
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Windows;
using System.Windows.Automation;
using System.Diagnostics;
namespace TestProject2
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
//Process p = Process.Start(@"E:\Project\WinFormTest\WinFormTest\bin\Debug\WinFormTest.exe");
var desktop = AutomationElement.RootElement; // 先找到根元素,可以认为是桌面
var condition = new PropertyCondition(AutomationElement.NameProperty, "计算器"); // 定义我们的查找条件,名字是test
var window = desktop.FindFirst(TreeScope.Children, condition); // 在桌面的子控件中查找第一个符合条件的窗体。
// AutomationElement btnpane = window.FindFirst(TreeScope.Children,
// new PropertyCondition(AutomationElement.ClassNameProperty, "CalcFrame"));
AutomationElement btn9 = window.FindFirst(TreeScope.Children,
// new PropertyCondition(AutomationElement.NameProperty, "9"));
new PropertyCondition(AutomationElement.AutomationIdProperty, "133"));
AutomationElement btnPlus = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, "+"));
AutomationElement btn3 = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, "3"));
AutomationElement btnEq = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, "="));
List<AutomationElement> ele_list = new List<AutomationElement>();
ele_list.Add(btn9);
ele_list.Add(btnPlus);
ele_list.Add(btn3);
ele_list.Add(btnEq);
InvokePattern invokeptn = null;
foreach (AutomationElement elem in ele_list)
{
invokeptn = (InvokePattern)elem.GetCurrentPattern(InvokePattern.Pattern);
invokeptn.Invoke();
}
AutomationElement result = window.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.AutomationIdProperty, "403"));
if (result.Equals(12))
{
int t1 = 9;
}
else {
int t2 = 7;
}
//通过ValuePattern设置或者获得TextBox1的值
//ValuePattern vpTextBox1 = (ValuePattern)result.GetCurrentPattern(ValuePattern.Pattern);
//vpTextBox1.SetValue("50");
TextPattern tpTextBox3 = (TextPattern)result.GetCurrentPattern(TextPattern.Pattern);
string results = tpTextBox3.DocumentRange.GetText(-1); //获取textbox3中的值
//AutomationEventHandler eventHandler = new AutomationEventHandler(autoClient.onWindowOpenOrClose);
//Automation.AddAutomationEventHandler(WindowPattern.WindowOpenedEvent, AutomationElement.RootElement, TreeScope.Children, eventHandler);
/*
Condition conditions = new AndCondition(new PropertyCondition(AutomationElement.AutomationIdProperty, resultTextAutoId),
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Text));
AutomationElement btn = window.FindAll(TreeScope.Descendants, conditions)[0];
InvokePattern invokeptn = (InvokePattern)btn.GetCurrentPattern(InvokePattern.Pattern);
invokeptn.Invoke();
var btnCondition = new AndCondition(
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button),
new PropertyCondition(AutomationElement.NameProperty, "ok"));
var button = window.FindFirst(TreeScope.Children, btnCondition);
var clickPattern = (InvokePattern)button.GetCurrentPattern(InvokePattern.Pattern);
clickPattern.Invoke();
*/
}
}
}
最后添加引用UIAutomationClientsideProviders.dll,UIAutomationTypes.dll,UIAutomationClient.dll三个dll的引用即可
相关文章推荐
- 基于UI Automation的自动化测试工具设计指南
- QA 基于开发的 JavaScript 修改测试数据和代码查看返回值的小例子
- 软件测试(3)-基于等价类划分的一个小例子
- Oracle基于会话和基于事务的临时表测试例子
- 关于二级指针的使用测试小例子,仅供测试--参数传递的时候用指针最好,因为压栈的时候指针,只是压入一个地址的值,最多4个字节(32位机上),提供的3个测试例子,基于VC6.0的环境。
- Android最简单的基于FFmpeg的例子(二)---测试编译好的SO库
- 主成分分析法之测试(本例子来源于<<基于开源工具的数据挖掘>>一书)
- restlet基于 jax-ws的测试例子
- Mac 下Eclipse4.7.2 搭建hibernate环境 以及测试例子
- 最简单的基于FFmpeg的AVfilter的例子-纯净版
- 基于android studio编译工具下的android开发之IBeacon 例子
- 基于SQLiteDatabase的记事本例子
- java 计算器基于工厂模式和功能单一模式
- java invoke简单入门例子(基于JDK接口实现)
- Spring基于注解的AOP测试
- RobotFrameWork(十三)RobotFramework与loadrunner性能测试结合(基于Remote库)
- 一个基于MINA框架应用的最简单例子
- java算法:基于应用ADT例子
- 最简单的基于FFmpeg的AVDevice例子(读取摄像头)
- 基于keepalived的redis通信链接数测试