首页 > 编程语言 >python桌面应用自动化,uiautomation模块的Depth和searchDepth心得

python桌面应用自动化,uiautomation模块的Depth和searchDepth心得

时间:2023-01-20 12:12:01浏览次数:66  
标签:searchDepth 控件 uiautomation notepadWindow python ButtonControl Depth 关闭

最近在学习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()
通过automation.py捕捉到记事本的控件信息,并进行标记,可以很清楚的理解Depth、searchDepth:

 

由上图,我们如果想点击关闭按钮,那我们可以有好几种写法,如下:

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进行使用

 

整个分享就是这样啦,如果有什么不对的地方还请见谅

标签:searchDepth,控件,uiautomation,notepadWindow,python,ButtonControl,Depth,关闭
From: https://www.cnblogs.com/xiongjianwen/p/17062639.html

相关文章

  • python 中值滤波
    ​​代码在git​​#!/usr/bin/envpython3#-*-coding:utf-8-*-"""CreatedonWedDec809:46:292021@author:ledi"""importnumpyasnpimportcv2frommatplotlib......
  • python 字典
    通俗理解字典就是Java中的map定义字典遵循k:string,v:obj的模式,也就是说,除了基本数据类型,v可以是对象,列表等等。dictionary={'name':'jack',age:19}操作字典新增属......
  • python操作redis
    一、连接redis连接redis的方式,我们通常选择连接池。importredispool=redis.ConnectionPool(host='127.0.0.1',port=6379,password='12345')r=redis.Redis(connec......
  • Python学习笔记--面向对象--基础
    1.面向对象和面向过程的区别是?面向过程:把问题,拆解性小的流程。优点是:把复杂问题,流程化后简单了。缺点是:扩展性差。面向对象:优点是:扩展性强。缺点是:将......
  • 朴素贝叶斯 python 实现
    ​​百度文库​​​​​​文库2​​机器学习实战的朴素贝叶斯的代码太复杂"""CreatedonThuAug1015:08:592017@author:luogan"""#coding=gbk#NaiveBayes#Calculate......
  • Python学习笔记-常用模块介绍--subprocess函数
    1.什么是subprocess?是英文翻译过来,是子进程的意思。sub儿子;process进程2.示例1:importsubprocess#sub是儿子的意思,这个函数是开启了子进程。importtime......
  • Python学习笔记-常用模块介绍--configparser函数
    1.常见的配置有哪些?ini/cnfyaml2.示例#注释1;注释2这是config.ini的文件[mysqld]k1=v1k2:v2user=egonage=18is_admin=truesalary=31[client]k1=......
  • Python学习笔记-常用模块介绍--random随机数函数
    1.random模块基本使用importrandomprint(random.random())#(0,1)----float大于0且小于1之间的小数print(random.randint(1,3))#[1,3]大于等于1且小......
  • Python学习笔记-常用模块介绍--hashlib哈希函数
    1.hash算法是什么?传入的值一样,结果一样。一种哈希算法算出来的结果,长度固定。不能反解。2.(扩展知识)文件下载完成后,进度显示100%,为什么不能立马打开?下载完成后,会进......
  • Python入门之变量
    """变量:在内存中存储数据"""#语法:#变量名称=对象#例如:name="张无忌"print(name)#语义:内存图#变量名:真实内存地址的别名#见名知意#......