c#使用UIA进行模拟点击操作

之前,我写过一篇c#使用spy进行模拟操作的文章,有此朋友在留言中提到了UIA进行操作,今天也使用UIA重新实现一次对vnc窗体的控制测试。

实现目标

在server框内填入192.168.2.200

自动点击Options按钮。

工具介绍

uispy,使用此工具查找窗体。可在我的csdn上下载,下载uispy

在uispy内,找到我们需要操作的窗点,点击每行,将会使用红色边框线自动框选对应的窗口。

代码编写

执行结果如上图。

//找到名称为 VNC Viewer : Connection Details 的窗体
            var desktop = AutomationElement.RootElement;//得到桌面
            //创建一个搜索条件,条件标明使用name属性,值为我们需要找的窗体名称。
            var condition = new PropertyCondition(AutomationElement.NameProperty, "VNC Viewer : Connection Details");
            //查找符合条件的第一个窗体.
            var window = desktop.FindFirst(TreeScope.Children, condition);

            //在需要的窗体上查找到options按钮并执行点击
            var btncondition = new AndCondition(
                    new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.Button),
                    new PropertyCondition(AutomationElement.NameProperty,"Options...")
                );
            //找按钮
            var buttonoption = window.FindFirst(TreeScope.Children, btncondition);
            //获取按钮可操作事件
            var clickPattern = (InvokePattern)buttonoption.GetCurrentPattern(InvokePattern.Pattern);
            //执行事件
            clickPattern.Invoke();

            //GOOD,上面的代码都很顺利的执行,接下来我们继续实现向文本框内输入结果
            //使用同样的方法先找到文本框
            var txtcondition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit);
            //Descendants 这里注意,因为现在文本框不是窗口的直接子级,因此不可以直接使用Children.
            var txtbox = window.FindFirst(TreeScope.Descendants, txtcondition);
            var editPatten = (ValuePattern)txtbox.GetCurrentPattern(ValuePattern.Pattern);
            editPatten.SetValue("192.168.2.200");

参考资料

http://www.cnblogs.com/coderzh/archive/2009/11/14/1603109.html

http://www.cnblogs.com/stbchina/archive/2010/01/28/Tech-Trend-of-Microsoft-UI-Automation-Testing-Part-Two.html

时间: 2024-10-21 02:24:30

c#使用UIA进行模拟点击操作的相关文章

js javascript 模拟点击 超级链接点击 转

转自:http://mo2g.com/view/42/ 我尝试过多次用jQuery模拟用户点击a标签的功能,但都没有成功,并且困扰了很久.前段时间的一次发呆,冒出了新的想法,于是就动手进行了测试. 先看下边的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <html> <head> <meta charset="UTF-8"> <title>磨途歌-A标签测试1</tit

C# 模拟点击

在网上看到有人问C#中模拟鼠标点击按钮的帖子,在VB中用API实现的代码网上不少,可用C#写的基本就没有了,在这里简单写个事例. 1.首先建一个Demo项目.只有一个表单,标题是"Demo".里面放一个按钮Button1,Text设置为"Click Me".编译成exe.做事例用,这个代码就不用贴出来了吧 呵呵. 2.新建项目,添加表单,拖个按钮.代码如下: using System;using System.Collections.Generic;using Sy

Android模拟点击的两种方式

导论 在Android中模拟一个点击事件有两种方式是通过模拟MotionEvent来实现:一种是通过ADB来实现 第一种:模拟MotionEvent 通用方法如下: private void setSimulateClick(View view, float x, float y) { long downTime = SystemClock.uptimeMillis(); final MotionEvent downEvent = MotionEvent.obtain(downTime, dow

selenium webdriver模拟鼠标键盘操作

在测试使用Selenium webdriver测试WEB系统的时候,用到了模拟鼠标.键盘的一些输入操作. 1.鼠标的左键点击.双击.拖拽.右键点击等: 2.键盘的回车.回退.空格.ctrl.alt.shift等: 在webdriver中,有专门的一个类,是用来进行鼠标.键盘的模拟操作的,那就是Actions类,该类使用时,又会涉及到Keyboard.Mouse.CompositeAction(复合动作),先对Mouse的方法做简单罗列,然后再用代码说明: 1.鼠标左键点击: Actions ac

sikuli点击操作无效解决办法

最近研究sikuli做一个自动化操作的小工具,利用sikuli图像识别的能力模拟鼠标.键盘操作.脚本编写容易,调试时候却发现鼠标可以移动到键盘精灵的操作按钮,点击按钮不起作用.通过测试发现,sikuli脚本操作浏览器.windows窗口点击操作有效,使用操作系统是win7.找了很久也没有解决办法.后来发现这其实windows权限导致的,因为键盘精灵是以administrator权限启动的,而sikuli是以当前普通用户启动.所以sikuli程序是没有权限操作该软件的.解决的办法是:以admini

记一次【模拟点击】,WinForm小软件开发过程

前言 年初四月份的时候,有朋友找到我,说想开发一个模拟点击的软件.最终软件做完后,发现效果不理想.唯一开发的我是认为最好是放弃了,做运营的他,坚持说这个没问题,说是改变合作方式.最终也是不了了之了. 不过,在这中间经历了一次重写,三次核心方法的变更,无数次的查资料,找解决办法至凌晨.中间穿插了无数次的讨论修改,修改讨论.虽然功能很简单,但是也花费了三个月的心血.心想,还是想好好总结一下.最后的软件界面如下: 实现思路&使用控件 首先,在内置浏览器里面打开网页,通过Javascript 获取需要的

Android---Monkey指令进行压力测试实例(模拟点击)

我们在做安卓APP测试的时候,经常会用到Monkey指令来模拟对APP的点击操作,从而达 到多次点击的效果,比如连续点击1W次,看看APP的运行情况.下面呢我就给大家介绍下 用Monkey指令模拟点击APP的的方法. 下载好adb文件,我这里是已经有了,然后解压到自己的某个路径(随意,不强 制放在C盘目录下),我这里放在了D盘 设置好adb的环境变量: 通过cmd验证是否安装成功,输入adb shell,成功的话会显示如下: 我这手机在充电模式,这样显示了.开机后不会有下面的error信息. 在

webkit 模拟点击 winform

刚在园子里看到有博主将WebBowser控件替换为Chrome内核(),链接http://www.cnblogs.com/gdyblog/p/WebKitBrowser.html 于是我想既然实现了替换内核,下一步就是模拟填表单和模拟点击等常规网页操作了吧.于是做了一点探索.实现模拟点击了. 代码如下: webBrowser1.StringByEvaluatingJavaScriptFromString("document.getElementById('su').click()");

使用ButterKnife注解框架实现View的点击操作

使用ButterKnife注解式框架可以简化代码的书写,尤其是对一些控件的操作.不再需要findViewById(...),setOnClickListener(...),内部类,实现接口等方法来设置View的监听器.使代码更为简洁高效. Android中的控件统称为View.本案例将会选择Button来简单模拟View被点击的过程.具体实现代码如下: public class MainActivity extends Activity { /** * 在这里变量和xml控件进行了绑定,从某种意