Server-Side UI Automation Provider - WPF Sample

Server-Side UI Automation Provider - WPF Sample

2014-09-14

引用程序集

自动化对等类

WPF Sample

参考

引用程序集



返回

  • UIAutomationProviders.dll
  • UIAutomationTypes.dll
  • WindowsBase.dll

自动化对等类[1]



返回

WPF 控件通过派生自 AutomationPeer 的对等类的树来支持 UI 自动化。  按照约定,对等类的名称须以控件类的名称开头,并以“AutomationPeer”结尾。 例如,ButtonAutomationPeer 是 Button 控件类的对等类。 这些对等类基本等效于 UI 自动化控件类型,但专用于 WPF 元素。 通过 UI 自动化接口访问 WPF 应用程序的自动化代码不直接使用自动化对等类,但同一进程空间中的自动化代码可以直接使用自动化对等类。

图1 ButtonAutomationPeer metadata

WPF Sample[2]



返回

示例代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Windows;
 6 using System.Windows.Controls;
 7 using System.Windows.Data;
 8 using System.Windows.Documents;
 9 using System.Windows.Input;
10 using System.Windows.Media;
11 using System.Windows.Media.Imaging;
12 using System.Windows.Navigation;
13 using System.Windows.Shapes;
14 using System.Windows.Automation.Peers;
15 using System.Windows.Automation.Provider;
16 namespace WpfServerProvider
17 {
18     /// <summary>
19     /// Interaction logic for MainWindow.xaml
20     /// </summary>
21     public partial class MainWindow : Window
22     {
23         public MainWindow()
24         {
25             InitializeComponent();
26             UIAButton btn = new UIAButton();
27             btn.Content = "TestButton";
28             this.Content = btn;
29         }
30     }
31     //My WPF button class, derive from WPF Button class
32     public class UIAButton : Button
33     {
34         //Override this function to return my derived AutomationPeer class
35         protected override AutomationPeer OnCreateAutomationPeer()
36         {
37             return new UIAButtonAutomationPeer(this);
38         }
39     }
40     //My AutomationPeer class
41     //Add implementation of UI ValuePattern comparing with base implementation
42     public class UIAButtonAutomationPeer : ButtonAutomationPeer, IValueProvider
43     {
44         //owner parameter is the WPF Button instance
45         public UIAButtonAutomationPeer(Button owner)
46             : base(owner)
47         {
48         }
49         //Return UIA Name property
50         protected override string GetNameCore()
51         {
52             string originalName = base.GetNameCore();
53             return string.Format("{0} {1}", originalName, DateTime.Now.ToLongTimeString());
54         }
55         //Return ValuePattern interface
56         public override object GetPattern(PatternInterface patternInterface)
57         {
58             if (patternInterface == PatternInterface.Value)
59             {
60                 return this;
61             }
62             return null;
63         }
64         public bool IsReadOnly { get { return true; } }
65         //ValuePattern‘s implementation
66         public string Value
67         {
68             get
69             {
70                 return string.Format("Height={0},Wideth={1}",
71                     Owner.RenderSize.Height, Owner.RenderSize.Width);
72             }
73         }
74         public void SetValue(string value) { }
75     }
76 }

图2 UISpy to WPF provider sample

参考

[1] WPF 自定义控件的 UI 自动化
[2] UI Automation -- Under the Hood

时间: 2024-10-28 23:46:54

Server-Side UI Automation Provider - WPF Sample的相关文章

Client-Side UI Automation Provider - WinForm Sample

Client-Side UI Automation Provider -  WinForm Sample 2014-09-15 引用程序集 实现提供程序接口 分发客户端提供程序 注册和配置客户端提供程序 WinForm Sample 参考 引用程序集[1] 返回 UIAutomationClient.dll UIAutomationProviders.dll UIAutomationTypes.dll 实现提供程序接口[2] 返回 以下示列实现提供程序接口:IRawElementProvider

Server-Side UI Automation Provider - WinForm Sample

Server-Side UI Automation Provider - WinForm Sample 2014-09-14 引用程序集 提供程序接口 公开服务器端 UI 自动化提供程序 从 UI 自动化提供程序返回属性 从 UI 自动化提供程序中引发事件 在 UI 自动化提供程序中支持控件模式 WinForm Sample 参考 引用程序集[1] 返回 UI 自动化提供程序项目必须引用以下程序集: UIAutomationProviders.dll UIAutomationTypes.dll

MS UI Automation Introduction

MS UI Automation Introduction 2014-09-17 MS UI Automation是什么 UIA架构 UI自动化模型 UI自动化树概述 UI自动化控件模式概述 UI 自动化属性概述 UI 自动化事件概述 示例 使用UISpy工具 UI自动化提供者 常见问题分析解决 控件无法识别 Timing issue 本地化问题 自动化技术和自动化框架 参考 MS UI Automation是什么[1] 返回 UI Automation 就是用另一个程序来控制UI 程序,模拟用

UI Automation

Introduction UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active Accessibility.UI Automation在某些方面超过了MSAA,UI自动化提供了Windows Vista中,微软Windows XP的全部功能,和Windows Server 2003. 在UI Automation中,所有的窗体.控件都表现为一个AutomationElement

MS UI Automation简介

转自:http://blog.csdn.net/ffeiffei/article/details/6637418 MS UI Automation(Microsoft User Interface Automation:UIA)是随.net framework3.0一起发布的,虽然在如今这个几乎每天都有各种新名词.新技术出来的所谓的21世纪,它显得已经有些过时了.前些日子,正好一个项目,可以用到它,又重新整理了一下: 什么是MS UI Automation MS UI Automation是MS

UI Automation 简介

转载,源地址: http://blog.csdn.net/ffeiffei/article/details/6637418 MS UI Automation(Microsoft User Interface Automation:UIA)是随.net framework3.0一起发布的,虽然在如今这个几乎每天都有各种新名词.新技术出来的所谓的21世纪,它显得已经有些过时了.前些日子,正好一个项目,可以用到它,又重新整理了一下: 什么是MS UI Automation MS UI Automati

基于UI Automation的自动化测试框架 .

http://blog.csdn.net/roger_ge/article/details/5531941 第一部分:前言 自动化测试或许是众多测试同行都在研究或准备研究的领域.结合自己的能力和公司的状况,选择合适的自动化工具.搭建正确而又高效的框架或许是个永远讨论不完的话题,正如应了那句话,没有最好,只有更好. 个人所在的公司当前开展的很多项目都是基于Win7和WPF开发的,之前想尝试用QTP对之进行录制和回放操作,不幸的是,需要额外的WPF插件支持:另外QTP的脚本语言是VBScript,虽

使用UI Automation实现自动化测试--5-7

使用UI Automation实现自动化测试--5 (Winfrom和WPF中弹出和关闭对话框的不同处理方式) 在使用UI Automation对Winform和WPF的程序测试中发现有一些不同的地方,而这些不同来自于Winform与WPF的处理机制不同.下面我们通过一个简单的实例来加以说明: 实例描述 我们使用InvokePattern来点击按钮弹出一个对话框,然后点击对话框中的“确定”按钮关闭对话框. 两种方式对比 首先我们使用如下代码来针对Winfom和WPF分别进行测试: 1public

使用UI Automation实现自动化测试 --工具使用

当前项目进行三个多月了,好久也没有写日志了:空下点时间,补写下N久没写的日志 介绍下两个工具 我本人正常使用的UISpy.exe工具和inspect.exe工具 这是UISPY工具使用的图,正常使用到的几个属性 这里重点说一下微软件的UI Automation中的重要类型是AutomationElement 图上的文本元素可通过AutomationElement,上级类型来获取子节点中的窗体或控件 ,也可以根据类型获取 如图所示:我们通过UIspy工具找到相应的控件名称,就可以用以下语法和属性获