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内 ...
随机推荐
- 为Jekyll静态网站添加PlantUML插件
前言 突然想起来要好好整理一下自己的博客空间,已经荒废很多年,如果再不捡起来,等到自己知识老化的时候再去写东西就没人看了. 使用Github Pages + Jekyll把博客发布为静态网站,给人感觉 ...
- 微信小程序-获取用户头像信息以及修改用户头像
这里主要用到button的open-type功能,官网已有说明: 给button设置open-type="chooseAvatar",来使bindchooseavatar方法生效, ...
- ACR2022的辩论:DMARDs在pre-RA中的作用
ACR2022的辩论:DMARDs在pre-RA中的作用 2022年11月13日 亚临床RA在风湿病学实践中越来越常见:然而,目前尚不清楚如何管理这些患者,以及启动DMARD是否可以预防RA的发展 ...
- 在VSCode中配置代码自动 eslint 格式化 (实测有用)
一.Eslint Eslint 是用来检测和规范代码格式的工具,应用在工程化项目中,可以保证项目代码格式的一致性和规范性,大大提升了代码的可读性. 二.配置过程 本博客是讲述对一个已经引用 esl ...
- CSS 数学函数与容器查询实现不定宽文本溢出跑马灯效果
在许久之前,曾经写过这样一篇文章 -- 不定宽溢出文本适配滚动.我们实现了这样一种效果: 文本内容不超过容器宽度,正常展示 文本内容超过容器的情况,内容可以进行跑马灯来回滚动展示 像是这样: 但是,之 ...
- APP压力稳定性测试-Monkey
一.Monkey工具简介 1.monkey的来源: Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户:触摸屏幕.滑动Trackball.按键等随机事件流来对设备上的程序进行压力 ...
- 【6】java之数组的定义和使用
一.数组的定义与使用 1.1 数组的基本概念 数组指的就是一组相关变量的集合. 数组的定义: 声明并开辟数组 数据类型 数组名称 [] = new 数据类型[长度]: 数据类型 [] 数组名称 = n ...
- C#窗体控件,文字随电脑分辨率自动调整大小
一.在类中添加方法,代码如下: #region 窗体控件.字体随分辨率调整,自动调整大小 public static void SetTag(Control cons) { foreach (Cont ...
- gateway添加跨域配置
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Co ...
- mysql中int、bigint、smallint 和 tinyint四种数据类型
最近在做数据库表设计的时候,对于多种数字的数据类型的选择存在很多顾虑,不是很清楚到底如何选择.总结一下int.bigint.smallint 和 tinyint四种数据类型. bigint:从 -2^ ...