UIAutomation 测试winForm

 static void Main(string[] args)
        {
            Console.WriteLine("\n开始窗口程序自动化测试\n");
            //启动被测试程序
            string path = @"程序路径";
            Process p = Process.Start(path);

            //自动化跟元素
            AutomationElement desktop = AutomationElement.RootElement;
            //查找主窗体方法1
            //Thread.Sleep(2000);
            //AutomationElement aeForm = AutomationElement.FromHandle(p.MainWindowHandle);
            AutomationElement aeForm;
            //方法2
            int numWaits = 0;
            do
            {
                Console.WriteLine("等待测试窗口……");

                //查找第一个自动化元素
                aeForm = desktop.FindFirst(TreeScope.Children, new PropertyCondition(

                AutomationElement.NameProperty, "Form1"));

                ++numWaits;

                Thread.Sleep(100);
            } while (null == aeForm && numWaits < 50);

            if (aeForm == null)
                throw new NullReferenceException("找不到测试窗口!");
            else
                Console.WriteLine("找到测试窗口~");
            //找到第一个Button
            AutomationElement aeButton = aeForm.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "btnCalc"));

            //找到所有textbox控件
            AutomationElementCollection aeAllTextBoxs=aeForm.FindAll(TreeScope.Children,new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.Edit));

            AutomationElement aeText3 = aeAllTextBoxs[0];//集合的索引和控件位置相反
            AutomationElement aeText2 = aeAllTextBoxs[1];
            AutomationElement aeText1 = aeAllTextBoxs[2];

            ValuePattern vpText1 = (ValuePattern)aeText1.GetCurrentPattern(ValuePattern.Pattern);
            vpText1.SetValue("300");
            ValuePattern vpText2 = (ValuePattern)aeText2.GetCurrentPattern(ValuePattern.Pattern);//把控件转换成Value模式
            vpText2.SetValue("500");
            Thread.Sleep(500);

            //通过InvokePattern模拟点击按钮
            InvokePattern ipbtnCalc = (InvokePattern)aeButton.GetCurrentPattern(InvokePattern.Pattern);//把控件转换成Invoke模式
            ipbtnCalc.Invoke();
            Thread.Sleep(500);
          //  Console.ReadKey();

            //验证实际结果和预期结果是否相符
            TextPattern tpText3 = (TextPattern)aeText3.GetCurrentPattern(TextPattern.Pattern);//把控件转换成Text模式
            string actual= tpText3.DocumentRange.GetText(-1);
            // string actual = tpText3.DocumentRange.GetText(2);//getext中的值要>=返回结果的长度,才可以取全值.方便起见-1也可以取全值
            string expect = "800";
            if (actual == expect)
            {
                Console.WriteLine("【实际值】=" + actual);
            }
            else {
                Console.WriteLine("【实际值】="+actual+";【期望值】"+expect);
            }
            Thread.Sleep(5000);
            WindowPattern wpCloseForm = (WindowPattern)aeForm.GetCurrentPattern(WindowPattern.Pattern);
            wpCloseForm.Close();
            Console.WriteLine("\n测试结束\n");
            Console.ReadKey();
        }

MS提供的控件Pattern
 
DockPattern                              
ExpandCollapsePattern

GridPattern                                 
GridItemPattern

InvokePattern                             
MultipleViewPattern

RangeValuePattern

ScrollPattern
ScrollItemPattern

SelectionPattern

SelectionItemPattern

TablePattern
TableItemPattern

TextPattern
TogglePattern

TransformPattern
ValuePattern

WindowPattern

UIAutomation 测试winForm

时间: 2024-10-29 19:05:46

UIAutomation 测试winForm的相关文章

测试winform程序到树莓派运行

啥也不说了,都在下图中了.winform可以在树莓派上跑了 原文地址:https://www.cnblogs.com/willhuo/p/11881337.html

测试winform自动悬浮

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms; namespace WinForm{ public partial class Form

如何使用UIAutomation进行iOS 自动化测试

2012-08-10 15:47 by 知平软件, 15839 阅读, 5 评论, 收藏,  编辑 写在前面 研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不到什么好的资料,只能从Apple的官网查阅相关的API文档,只可惜,Apple对开发者来说实在是不怎么友好,文档写得相当的粗略,对于初学者来说有一定的难度. 本来是打算自己动手写一篇关于iOS的UI自动化测试的入门级别的介绍性文档的,但想起来后面在具体解决一些问题的时候,收藏一篇很好的Blog,很全面地介绍了如何使用UIAut

Winform开发框架之存储过程的支持--存储过程的实现和演化提炼(2)

本篇继续上篇<Winform开发框架之存储过程的支持--存储过程的实现和演化提炼(1)>来对Winform开发框架之存储过程的支持进行介绍,上篇主要介绍了SQLServer和Oracle两种数据库对常规存储过程的编写和对比,本篇主要介绍如何在C#里面,如何对这些存储过程进行调用,并获取到对应的数据类型,如输出参数,单个数据记录,多个数据记录等情况.最后在完成实现功能的基础上,对这些实现进行演化提炼,并扩展到我的WInform开发框架里面,实现功能重用.代码简化的目的. 1.数据访问接口的定义

2015年iOS测试现状

本文由 伯乐在线 - nathanw 翻译,dopcn 校稿.未经许可,禁止转载! 英文出处:www.mokacoding.com.欢迎加入翻译小组. 几周前,我决定将将我在 mokacoding 上的创作更多集中在单元测试与验收测试,自动化和生产效率上,主要在iOS领域. 相关深入文章可以看看“通过 CocoaPods 为 iOS 项目创建 Calabash 并构建配置”和“用终端运行 Xcode 测试”. 这周我们要回过头来看看,或者说是站在更高的角度审视单元测试和验收测试,以及在云端运行持

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

经典测试开发面试题(二)

01. 为什么要在一个团队中开展软件测试工作? 因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作.在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况. 02. 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作? 我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试.最擅长的是功能测试 03.

Android Framework 记录之二

原文地址:http://blog.csdn.net/banketree/article/details/24982021 接着上次的记录,续写. 23.services目录 文件 描述 class AlarmManagerService extends IAlarmManager.Stub { //定时管理服务 public class AppOpsService extends IAppOpsService.Stub {  // 程序选项服务 public class AppsLaunchFa

C# 验证码

Random2Verify类 , 随机产生纯数字/纯字母/数字加字母2中方式的验证码. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace Image2VerifyLib.com {     /// <summary>     /// 随机生成验证码数据     /// </summary>