推荐产品
联系我们

地址:上海市长宁区仙霞路350号10幢3楼3034室

电话:021-62378659

传真:021-62378659

邮箱:0350zp@163.com

上海新闻

桌面主动化完毕道理-RPA

来源:博天堂ag,博天堂AG手机版,博天堂ag旗舰时间: 2020-05-23浏览次数:作者:澳门皇冠
RPA产品实现自动化从类型上大致可以分为桌面应用/浏览器应用/其它(Mainframe/Java等),本文将分析RPA或者自动化类工具实现桌面应用自动化的原理。 找找元素、控件、输入框、等等想

  RPA产品实现自动化从类型上大致可以分为桌面应用/浏览器应用/其它(Mainframe/Java等),本文将分析RPA或者自动化类工具实现桌面应用自动化的原理。

  找找元素、控件、输入框、等等想找的内容读读取文本,状态,位置,是否勾选等等控单击、双击、输入内容、下拉等操作属于控制的范畴

  Windows API是微软在Windows操作系统中提供的一套核心应用程序编程接口(API)。

  Windows API (Win32)主要关注于编程语言C,因为其公开的函数和数据结构在其文档的最新版本中都是用该语言描述的。但是,任何能够处理低级数据结构以及为调用和回调指定的调用约定的编程语言编译器或汇编程序都可以使用该API。类似地,API函数的内部实现历史上是用几种语言开发的。尽管C语言不是面向对象的编程语言,但Windows API和Windows在历史上都被描述为面向对象的。还有许多面向对象语言的包装器类和扩展,它们使这个面向对象的结构更加显式(Microsoft Foundation Class Library (MFC)、Visual Component Library (VCL)、GDI+等)。例如,Windows 8提供了Windows API和WinRT API,这些API是用c++实现的,设计上是面向对象的。

  使用最新框架开发计算器应用,Spy++ 仅仅可以识别计算器窗体最基础的名称,位置,HWND等信息,无法识别更细节的每一个按钮,Win32API无法完全自动化这类应用。

  Spy++工具提取了上百个各类窗体信息,导致查找效率低,比较适合一些较老的应用,在与MSAA和UIA搭配使用时可以获得不错的效果。

  Win32API可以操作底层的OS接口,用来处理模拟键盘鼠标,特殊的一些窗体时有奇效。

  AutoIt v3是一种类似于Basic的免费软件脚本语言,用于自动化Windows GUI和通用脚本。它使用模拟击键、鼠标移动和窗口/控制操作的组合,以一种其他语言(例如VBScript和SendKeys)不可能或不可靠的方式自动化任务。AutoIt也非常小,自包含,可以运行在所有版本的Windows开箱即用,不需要烦人的“运行时”!

  使用复杂,实现成本高。Win32 API的使用上有很多需要特别注意的细节, 比如有的Win32 API不能跨进程工作,有的Windows Message只能发给当前线程所创建的窗口,稍有不慎,就导致自动化程序不稳定。

  过于底层,不便使用。为了方便调用,往往需要对API进行封装,增加了实现成本。例如Win32查询窗体方法,内置方法FindWindow 和 FindWindowEx需要逐层获取HWND,逐层查找,在嵌套多层的UI程序面前显特别不方便。于是就需要自己封装一些实用的方法和类。

  不同的开发工具,比如MFC, VCL,以及Framework,在内部实现上对Win32 API有很多细节的处理。例如, .NET 中的WinForm Control对Win32 HWND的维护是动态的,同一个WinForm Control的HWND在程序的生命周期内是可能发生改变的,这一点对于依赖HWND作为唯一标识的Win32 API就是一个致命伤。无法识别许多新框架窗体内容。例如这次举例的计算器程序,使得Win32 API对于这类应用基本没什么用武之地。

  Microsoft Active Accessibility (MSAA)是一个用于用户界面可访问性的应用程序编程接口(API)。MSAA是在1997年作为Microsoft Windows 95的附加平台引入的。MSAA旨在帮助辅助技术(AT)产品与应用程序(或操作系统)的标准和自定义用户界面(UI)元素进行交互,以及访问、标识和操作应用程序的UI元素。AT产品与MSAA支持的应用程序一起工作,以便为有身体或认知困难、缺陷或残疾的个人提供更好的访问。AT产品的一些例子是为视力有限的用户提供的屏幕阅读器,为身体接触有限的用户提供的屏幕键盘,或为听力有限的用户提供的旁白器。MSAA还可以用于自动化测试工具和基于计算机的培训应用程序。

  MSAA的最新规范可以在Microsoft UI自动化社区承诺规范中找到。

  AccExplorer工具识别的响应速度非常快,但是忽略了许多对自动化很重要的属性参数例如:AumationId , Control Type 等,所以实际应用中是蛮不方便的。

  MSAA拾取方式可以适配的Window 桌面应用类型是非常广泛的,尽管UIA会继承MSAA,只是当下MSAA可以搞定自动化元素场景还是挺丰富的。

  MSAA基于COM技术, 但IAccessible并不是一个COM标准接口。比如使用者不需要调用CoInitialize即可使用,也无法通过QueryInterface进一步获取更多的自定义接口。这局限了MSAA所能提供的功能。IAccessible接口的定义有缺陷。里面不少方法是可有可无的,但是又缺少一些支持UI自动化的关键方法。比如它提供了accSelect支持控件的选取,但是却没有类似accExpand这样的方法支持树状控件的展开等。复杂窗体元素定位效率低

  Microsoft UI Automation (UIA)是一个应用程序编程接口(API),它允许访问、标识和操作另一个应用程序的用户界面(UI)元素。UIA的目标是提供UI可访问性,它是Microsoft Active Accessibility的继承者。它还促进了GUI测试自动化,并且它是许多测试自动化工具所基于的引擎。许多RPA工具也使用它来自动化业务流程中的桌面应用程序。

  阅读UiPath拾取器Selector属性即可发现,Uipath通过UIA的拾取方式提取了上图内容。

  微信桌面版在程序表面添加了一层类似阴影或者蒙版的窗体,用来阻隔UIA识别工具的侦察。(高~~~)

  MSAA和UIA是两种不同的技术,但它们的基本设计原则是相似的。这两种技术的目的都是公开有关Windows应用程序中使用的UI元素的丰富信息。易访问性工具的开发人员可以使用这些信息来创建软件,使在Windows上运行的应用程序更容易被有视觉、听觉或运动障碍的人访问。

  MSAA和UIA都将UI对象模型公开为层次树,以桌面为根。MSAA将单个UI元素表示为可访问的对象,而UI Automation将它们表示为自动化元素。两者都将可访问性工具或软件自动化程序作为客户端。然而,MSAA将提供可访问性UI的应用程序或控件称为服务器,而UI Automation将其称为提供者。

  微软在Windows 95发布的同时设计了Microsoft Active Accessibility object模型。该模型基于十年前定义的“角色”,不能支持新的UI行。


关于我们 简介 企业文化
联系我们

地址:上海市长宁区仙霞路350号10幢3楼3034室

电话:021-62378659

传真:021-62378659

邮箱:0350zp@163.com

扫一扫
Copyright ©  2015-2025 博天堂AG手机版  版权所有
html地图|xml地图