初识UI自动化(inspect.exe + uiautomation)

这篇具有很好参考价值的文章主要介绍了初识UI自动化(inspect.exe + uiautomation)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言

二、具体内容

inspect.exe讲解

Options(选项栏)

Toolbar(工具栏) 

uiautomation讲解

三、总结


 

一、前言

        笔者最近也在学习关于uiautomation的相关小项目,不过在做这些自动化之前,需要首先获取你需要操作的元素的相关信息,比如:鼠标点击事件、键盘输入事件,快捷键操作。 目前获取需要操作的元素的相关信息的软件有许多,如UIspy.exe,inspect.exe,Insight.exe等等。下文中以inspect.exe为例。

补充:如果需要Insight.exe,请点这里。

二、具体内容

参考文献:

辅助功能工具 - 检查 - Win32 apps | Microsoft Docs

https://github.com/yinkaisheng/Python-UIAutomation-for-Windows/blob/master/readme_cn.md

 

inspect.exe讲解

检查 "窗口有几个主要部分:

  • 标题栏。 显示" 检查 HWND (窗口句柄) 。
  • 菜单栏。 提供对 检查功能 的访问权限。
  • 工具 栏。 提供对 检查功能 的访问权限。
  • 树视图。 将 UI 元素的层次结构呈现为树视图控件,可用于在元素之间导航。
  • 数据视图。 显示所选 UI 元素的所有公开辅助功能属性。

初识UI自动化(inspect.exe + uiautomation)

 

菜单栏中提供的命令也可在工具栏中使用。 下图展示了 Inspect 工具,用于查询记事本中 “编辑” 菜单元素的 UI 自动化属性。

Options(选项栏)

初识UI自动化(inspect.exe + uiautomation)

选择此选项后 检查 会这样做

始终位于顶部

(Always on Top)

显示在屏幕上的任何其他窗口的顶部。

MSAA 模式

(MSAA Mode)

显示Microsoft Active Accessibility属性信息。

UI 自动化模式

(UI Automation Mode)

显示UI 自动化属性信息。

原始视图

(Raw View)

在" 树"视图中 UI 自动化树或 MSAA 树的原始视图 。

控件视图

(Control View)

在" 树"视图中 UI 自动化树的 控件 视图。 仅在UI 自动化模式下可用。

内容视图

(Content View)

在" 树"视图中 UI 自动化树 的内容 视图。 仅在UI 自动化模式下可用。

活动悬停工具栏

(Active-Hover Toolbar)

在鼠标悬停时激活工具栏按钮,而无需单击鼠标。

出错时发出Epep

(Beep on Error)

在运行或 MSAA 操作期间检测到错误时UI 自动化发出警报。

SPI _ SCREENREADER 标志

(SPl_SCREENREADER flag)

假设存在屏幕阅读器。 此标志指示应用程序应以文本方式(而不是图形方式)提供信息。 不应仅仅因为存在屏幕阅读器而设置此标志。

显示突出显示矩形

(Show Highlight Rectangle)

突出显示具有焦点的元素周围的矩形。

显示 Caret 突出显示

(Show Caret Highlight)

突出显示该点。 仅在 MSAA 模式下可用。

显示信息工具提示

(Show Information Tooltip)

在工具提示中显示属性信息。

观看焦点

(Watch Focus)

初识UI自动化(inspect.exe + uiautomation) 

跟随键盘焦点。 选中后,将安装异步焦点事件挂钩,将光标移到具有焦点的元素的左上方。 这将导致 检查 在大约一秒后刷新其属性。

监视 Caret

(Watch Caret)

初识UI自动化(inspect.exe + uiautomation) 

遵循该点。 仅在 MSAA 模式下可用。

监视光标

(Watch Cursor)

初识UI自动化(inspect.exe + uiautomation) 

在光标后。

监视工具提示

(Watch Tooltips)

初识UI自动化(inspect.exe + uiautomation) 

遵循工具提示。

显示树

(Show Tree)

初识UI自动化(inspect.exe + uiautomation) 

显示" 树" 视图。

Toolbar(工具栏) 

初识UI自动化(inspect.exe + uiautomation)

1:Refresh,刷新Tree View(树视图)

2:Copy Text to Clipboard,复制Data View(数据视图)的文本到剪切板

3:Show Settings Dialog,显示Options的Settings

4:剩下的重要按钮在Options中已经讲到,就不再重述了。

 文章来源地址https://www.toymoban.com/news/detail-421697.html

uiautomation讲解

uiautomation根据你提供的控件属性在控件树中从上往下查找控件。

假设控件树如下:

root(Name='Desktop', Depth=0)
  window1(Depth=1)
    control1-001(Depth=2)
    control1-...(Depth=2)
    ...
    control1-100(Depth=2)
  window2(Name='window2', Depth=1)
    control2-1(Depth=2)
      control2-1-001(Depth=3)
      control2-1-...(Depth=3)
      ...
      control2-1-100(Depth=3)
    control2-2(Depth=2)
    control2-3(Depth=2)
    control2-4(Name='2-4', Depth=2)
      editcontrol(Name='myedit1', Depth=3)
      editcontrol(Name='myedit2', Depth=3)

如果你想找到名字为myedit2的EditControl,并在这个EditControl打字,你可以这样写:

uiautomation.EditControl(searchDepth=3, Name='myedit2').SendKeys('hi')

但是这个代码运行效率并不高,因为控件树中有很多控件,你所查找的EditControl在树的末尾, 从树根部搜索整个控件树需要遍历200多次才能找到这个EditControl, 如果用分层查找并指定查找深度,就可以只查找几次,很快就能找到控件。

代码如下:

window2 = uiautomation.WindowControl(searchDepth=1, Name='window2')#search 2 times
sub = window2.Control(searchDepth=1, Name='2-4')# search 4 times
edit = sub.EditControl(searchDepth=1, Name='myedit2')# search 2 times
edit.SendKeys('hi')

先在root的第一层子控件中查找window2,需要查找2次。 再在window2的第一层子控件中查找control2-4,需要查找4次。 最后在control2-4的第一层子控件中查找myedit2,需要查找2次。 总共需要查找8次就能找到控件。

此外,在控件的__init__函数中,有下列参数可以使用:
        searchFromControl = None, 从哪个控件开始查找,如果为None,从根节点Desktop开始查找
        searchDepth = 0xFFFFFFFF, 搜索深度
        searchInterval = SEARCH_INTERVAL, 搜索间隔
        foundIndex = 1 ,搜索到的满足搜索条件的控件索引,索引从1开始
        Name 控件名字
        SubName 控件部分名字
        RegexName 使用re.match匹配符合正则表达式的名字,Name,SubName,RegexName只能使用一个,不能同时使用
        ClassName 类名字
        AutomationId 控件AutomationId
        ControlType 控件类型
        Depth 控件相对于searchFromControl的精确深度
        Compare 自定义比较函数function(control: Control, depth: int)->bool

重点如下: 

searchDepth和Depth的区别是:

searchDepth: int, max search depth from searchFromControl.

searchDepth在指定的深度范围内(包括1~searchDepth层中的所有子孙控件)搜索第一个满足搜索条件的控件

Depth: int, only search controls in relative depth from searchFromControl, ignore controls in depth(0~Depth-1),if set, searchDepth will be set to Depth too.

Depth只在Depth所在的深度(如果Depth>1,排除1~searchDepth-1层中的所有子孙控件)搜索第一个满足搜索条件的控件

 

三、总结

         在学习ui自动化的时候,inspect.exe的学习与使用可以大大减少你找你要操作的元素位置的时间。

        笔者最近也在学uiautomation的相关知识,要学习后续内容,以上知识的掌握必不可少,笔者也只是将参考文献中重要内容进行提取展示。之后笔者会更新一些关于uiautomation的小案例,敬请期待!

 

到了这里,关于初识UI自动化(inspect.exe + uiautomation)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • App自动化部署:uiautomator2

    快速安装库: pip3 install 库名 -i Simple Index --trusted-host pypi.douban.com appium缺点: appium运行慢、时间长 在低版本的appium上获取toast(消息弹窗)需要切换automationName uiautomator2优点: 环境搭建简单方便 执行速度很快 UI元素定位便捷好用、可视化好 获取toast非常简单 注意:uiautomatorvi

    2024年02月11日
    浏览(36)
  • 探索Python自动化利器:Windows UIAutomation

    项目地址:https://gitcode.com/yinkaisheng/Python-UIAutomation-for-Windows 在计算机自动化领域,Python一直以其强大的库支持和简洁的语法深受开发者喜爱。对于Windows平台上的图形界面自动化测试或任务执行,Python-UIAutomation-for-Windows项目提供了一个极其有用的工具集。本文将深入探讨该项目

    2024年04月25日
    浏览(28)
  • 如何使用IOS自动化测试工具UIAutomation

    这篇文章主要介绍了UIAutomation使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值 第一部分: 熟悉Instruments的UIAutomation. 第二部分: 控件的获取及操作 第三部分: 自定义自动化脚本 xcode中自带的Instuments工具可以用来进行APP的自动化测试, 以及用于进行内

    2024年02月03日
    浏览(32)
  • Uiautomator2实现Android自动化测试详解

    目录 1、UIautomator2框架原理 2、UIautomator2使用 2.1、安装 2.2、元素定位工具-weditor 2.3、设备连接 2.4、全局配置 2.4.1、通过settings设置 2.4.2、通过属性设置 2.5、APP相关操作 2.5.1、安装应用 2.5.2、启动应用 2.5.3、等待应用启动 2.5.4、结束应用 2.5.5、卸载应用 2.5.6、获取当前上层AP

    2024年02月20日
    浏览(31)
  • python控制Windows桌面程序自动化模块uiautomation

    github仓库地址:GitHub - yinkaisheng/Python-UIAutomation-for-Windows: (Donot use 3.7.6,3.8.1):snake:Python 3 wrapper of Microsoft UIAutomation. Support UIAutomation for MFC, WindowsForm, WPF, Modern UI(Metro UI), Qt, IE, Firefox, Chrome ...   uiautomation封装了微软UIAutomation API,支持自动化Win32,MFC,WPF,Modern UI(Metro UI), Qt, IE, F

    2024年02月04日
    浏览(27)
  • 移动端APP自动化测试框架-UiAutomator2基础

    很早以前,我用uiautomator+java实践过Android APP自动化测试,不过今天要提的不是uiautomator,而是uiautomator2。听起来uiautomator2像是uiautomator的升级版,但是这两款框架仅仅是名字上比较相似,实际上没有任何关联。 项目地址:https://github.com/openatx/uiautomator2 1.官方文档介绍 2.梳理一

    2024年02月13日
    浏览(51)
  • Windows GUI自动化控制工具之python uiAutomation

    对 Windows GUI进行自动化控制的工具有很多,比如pywinauto、pyautogui、pywin32、Autoit、airtest、UIAutomation等,UI Automation API是微软提供的自动化框架,可在支持 Windows Presentation Foundation (WPF) 的所有操作系统上使用,支持的应用类型更多。本文介绍封装了UI Automation API的Python uiautomatio

    2024年02月13日
    浏览(22)
  • 【测试】Python手机自动化测试库uiautomator2和weditor的详细使用

    1.说明 我们之前在电脑操作手机进行自动化测试,基本上都是通过Appium的,这个工具确实强大,搭配谷歌官方的UiAutomator基本上可以完成各种测试,但缺点也很明显,配置环境太麻烦了,需要jdk、sdk等,后来有人在UiAutomator的基础上使用http请求rpc服务的方式做了一个uiautomato

    2024年02月09日
    浏览(37)
  • Appium 自动化自学篇 —— 初识Appium自动化!

    随着移动终端的普及,手机应用越来越多,也越来越重要。而作为测试 的我们也要与时俱进,努力学习手机 App 的相关测试,文章将介绍手机自动化测试框架 Appium 。 那究竟什么是 Appium 呢? 接下来我们一起来学习Python+Selenium 做自动化测试。 (1) 什么是 Appium appium 是开源的移动

    2024年02月04日
    浏览(33)
  • Selenium自动化脚本打包exe文件

    近期由于工作需要写了一个selenium自动化脚本,但是每次运行的时候都要打开Pycharm,因此本人直接使用Python第三方打包库PyInstaller将py文件打包成一个可执行的exe文件,在使用时无需安装Python也可以点击运行。 PyInstaller是一个使用较为简单便捷的打包套件,只需要几行命令即可

    2023年04月08日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包