python桌面应用自动化,uiautomation模块的Depth和searchDepth心得
最近在学习yinkaisheng大神写的uiautomation模块,Depth和searchDepth一直使用不好,明明Depth=3,居然可以用searchDepth=1找到,网上也没找到答案,就自己试验了多次,终于发现了问题所在(主要是人比较笨),同时纠正下大神写的文档一处错误
自我理解:
searchDepth:查询的范围深度,基于当前所在控件再往下的深度,比如当前的listCtrl已经Depth=3了,如果要查listCtrl下Depth=5的控件,则searchDepth≥2都可查询当前这个控件
Depth:查询某一深度的控件,基于当前所在控件,再往下一个深度,只在那个深度进行查询,比如当前的listCtrl已经Depth=3了,如果要查listCtrl下Depth=5的控件,则Depth=2才能查到当前这个控件
图文解释:
用记事本做例子,代码是点击记事本的关闭按钮,执行代码如下:
notepadWindow = auto.WindowControl(searchDepth=1, ClassName='Notepad')
notepadWindow.ButtonControl(Depth=2,Name='关闭').Click()
由上图,我们如果想点击关闭按钮,那我们可以有好几种写法,如下:
1. 1 定位到记事本标题后再定位关闭: (标题是notepadWindow的下1层,所以Depth=1,关闭是标题的下一层,所以这个Depth也等于1)
notepadWindow.TitleBarControl(Depth=1).ButtonControl(Depth=1,Name='关闭')
1. 2 如果用searchDepth去写,只要searchDepth大于1,都可以查到,查到即停止
notepadWindow.TitleBarControl(Depth=1).ButtonControl(searchDepth=1,Name='关闭')
或:notepadWindow.TitleBarControl(Depth=1).ButtonControl(searchDepth=2,Name='关闭')
2. 1 直接定位到关闭按钮:(关闭是notepadWindow的下2层,所以Depth=2)
notepadWindow.ButtonControl(Depth=2,Name='关闭')
2. 2 如果用searchDepth去写,只要searchDepth大于2,都可以查到
notepadWindow.ButtonControl(searchDepth=2,Name='关闭')
或:notepadWindow.ButtonControl(searchDepth=3,Name='关闭')
注:如果查询参数中有Depth了,就不需要写searchDepth,Depth会把值赋值给searchDepth进行使用
整个分享就是这样啦,如果有什么不对的地方还请见谅
python桌面应用自动化,uiautomation模块的Depth和searchDepth心得的更多相关文章
- Python运维自动化psutil 模块详解(超级详细)
psutil 模块 参考官方文档:https://pypi.org/project/psutil/ 一.psutil简介 psutil是一个开源且跨平台(http://code.google.com/ ...
- Python+Selenium自动化-安装模块和浏览器驱动操作方法
Python+Selenium自动化-安装模块和浏览器驱动操作方法 1.安装模块文件 pip install selenium 2.安装浏览器驱动 我们主要用的浏览器驱动有chrome浏览器.fire ...
- python+pytest接口自动化(16)-接口自动化项目中日志的使用 (使用loguru模块)
通过上篇文章日志管理模块loguru简介,我们已经知道了loguru日志记录模块的简单使用.在自动化测试项目中,一般都需要通过记录日志的方式来确定项目运行的状态及结果,以方便定位问题. 这篇文章我们使 ...
- Python自动化开发 - 模块与包
本节内容 一.模块 1.import module 2.from module import 3.from module import * 4.模块的__name__属性 5.模块搜索路径 6. ...
- python+pytest接口自动化(15)-日志管理模块loguru简介
python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细). 但logging配置起来比较繁琐,且在多进行多线程等场景下使用时,如果不经过特殊处理, ...
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- python+request接口自动化框架
python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...
- Python实现浏览器自动化操作
Python实现浏览器自动化操作 (2012-08-02 17:35:43) 转载▼ 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是 ...
- [转载]Python实现浏览器自动化操作
原文地址:Python实现浏览器自动化操作作者:rayment 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...
- Python内置的urllib模块不支持https协议的解决办法
Django站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown url type: https”异常.寻根朔源发现是python内 ...
随机推荐
- 树莓派开机启动VNC
sudo nano /etc/init.d/vncserver #!/bin/sh ### BEGIN INIT INFO # Provides: vncserver # Required-Start ...
- 学习Java Day22
今天学习了如何在包中增加类,想要将包放入类中,就必须将包的名字放在源文件的开头,即放在定义这个包中各个类的代码之前
- NET近期面试总结和面试题
一.面试总结 避坑:深圳龙岗李朗YH股份会鸽offer 因为offer被鸽重新找工作,从8号开始面试到12号(11家公司),整体感觉面试难度不大,就是很多公司都是走流程,并不是真的需要人,有些甚至聊一 ...
- 五:spring boot
五.spring boot 通过springboot可以快速的搭建一个基于ssm框架的Java application,简单配置,自动装配. JavaConfiguration用java类来替代xml ...
- 免杀之:MSF后门metasploit-loader免杀
免杀之:MSF后门metasploit-loader免杀 目录 免杀之:MSF后门metasploit-loader免杀 1 metasploit-loader后门代码 2 在kali中编译metas ...
- (三) Mysql 之MVCC
mvcc介绍 MVCC是数据库提供并发访问控制的一种技术.其核心理念是数据快照,不同的事务访问不同版本的数据快照,从而实现不同的事务隔离级别.虽然是说具有多个版本的数据快照,但这并不意味着数据库必须拷 ...
- window C盘满了/文件夹太长怎么移动
通过以下命令移动文件夹 robocopy C:\Users\test\ E:\test\ /move /e C盘满了怎么办? 文件移动到其他盘,通过软连接访问 mklink /d "C:\U ...
- Xilinx XPM使用说明--XPM_MEMORY_SDPRAM
XPM_MEMORY_SDPRAM 参数化宏:简单的双端口RAM 介绍 此宏用于实例化简单双端口RAM.端口A用于从存储器执行写入操作,端口B可用于从存储器读取. 下面介绍XPM_MEMORY实例的基 ...
- 硬件监控:grafana+prometheus+node_exporter
一.前期准备: grafana:前端展示平台,没有数据存储功能,但是,它有不同的展示模板,然后,把后端数据库中提供的数据,进行展示 -->展示数据 prometheus(普罗米修斯):时序数据库 ...
- centos 修改ip
TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6IN ...