操作窗体中的控件

Pywinauto使用以下顺序定位一个控件

1:控件的标题 title

2:控件的类名 friendly class

3:控件的标题加类名 title + friendly class

常用定位控件接口(重要)

# 通过层级查找控件相关方法
window(**kwargs) # 用于窗口的查找
child_window(**kwargs) # 可以无视层级的找后代中某个符合条件的元素===>【最常用】
parent() # 返回此元素的父元素,没有参数
children(**kwargs) # 返回符合条件的子元素列表,支持索引,是BaseWrapper对象(或子类)
iter_children(**kwargs) # 返回子元素的迭代器,是BaseWrapper对象(或子类)
descendants(**kwargs) # 返回符合条件的所有后代元素列表,是BaseWrapper对象(或子类)
iter_children(**kwargs) # 符合条件后代元素迭代器,是BaseWrapper对象(或子类)---> 存疑,是iter_descendants?

常用属性(重要)

# 常用的
class_name=None, # 类名
class_name_re=None, # 正则匹配类名
title=None, # 控件的标题文字,对应inspect中Name字段
title_re=None, # 正则匹配文字
control_type=None, # 控件类型,inspect界面LocalizedControlType字段的英文名
best_match=None, # 模糊匹配类似的title
auto_id=None, # inspect界面AutomationId字段,但是很多控件没有这个属性# 不常用
parent=None,
process=None,# 这个基本不用,每次启动进程都会变化
top_level_only=True,
visible_only=True,
enabled_only=False,
handle=None,
ctrl_index=None,
found_index=None,
predicate_func=None,
active_only=False,
control_id=None,
framework_id=None,
backend=None,

控件可用的方法属性(重要)

# 以下几个只支持窗口模式的控件
dlg.close() # 关闭界面
dlg.minimize() # 最小化界面
dlg.maximize() # 最大化界面
dlg.restore() # 将窗口恢复为正常大小,比如最小化的让他正常显示在桌面
dlg.get_show_state() # 正常0,最大化1,最小化2
dlg.menu_select() # 菜单栏,eg:app.window.menu_select(Edit -> Replace)
dlg.exists(timeout=None, retry_interval=None) # 判断是否存在#timeout:等待时间,一般默认5s#retry_interval:timeout内重试时间
dlg.wait(wait_for, timeout=None, retry_interval=None) # 等待窗口处于特定状态
dlg.wait_not(wait_for_not, timeout=None, retry_interval=None) # 等待窗口不处于特定状态,即等待消失# wait_for/wait_for_not:# * 'exists' means that the window is a valid handle# * 'visible' means that the window is not hidden# * 'enabled' means that the window is not disabled# * 'ready' means that the window is visible and enabled# * 'active' means that the window is active# timeout:等待多久# retry_interval:timeout内重试时间# eg: dlg.wait('ready')# 鼠标键盘操作,只列举了常用形式,他们有很多默认参数但不常用,可以在源码中查看
ctrl.click_input() # 最常用的点击方法,一切点击操作的基本方法(底层调用只是参数不同),左键单击,使用时一般都使用默认不需要带参数
ctrl.right_click_input() # 鼠标右键单击
ctrl.type_keys(keys, pause = None, with_spaces = False,) # 键盘输入,底层还是调用keyboard.send_keys# keys:要输入的文字内容# pause:每输入一个字符后等待时间,默认0.01就行# with_spaces:是否保留keys中的所有空格,默认去除0
ctrl.double_click_input(button ="left", coords = (None, None)) # 左键双击
ctrl.press_mouse_input(coords = (None, None)) # 指定坐标按下左键,不传坐标默认左上角
ctrl.release_mouse_input(coords = (None, None)) # 指定坐标释放左键,不传坐标默认左上角
ctrl.move_mouse_input(coords=(0, 0)) # 将鼠标移动到指定坐标,不传坐标默认左上角
ctrl.drag_mouse_input(dst=(0, 0)) # 将ctrl拖动到dst,是press-move-release操作集合# 控件的常用属性
ctrl.children_texts() # 所有子控件的文字列表,对应inspect中Name字段
ctrl.window_text() # 控件的标题文字,对应inspect中Name字段
# ctrl.element_info.name
ctrl.class_name() # 控件的类名,对应inspect中ClassName字段,有些控件没有类名
# ctrl.element_info.class_name
ctrl.element_info.control_type # 控件类型,inspect界面LocalizedControlType字段的英文名
ctrl.is_child(parent) # ctrl是否是parent的子控件
ctrl.legacy_properties().get('Value') # 可以获取inspect界面LegacyIAccessible开头的一系列字段,在源码uiawraper.py中找到了这个方法,非常有用# 控件常用操作
ctrl.draw_outline(colour='green') # 空间外围画框,便于查看,支持'red', 'green', 'blue'
ctrl.print_control_identifiers(depth=None, filename=None) # 以树形结构打印其包含的元素,详见打印元素# depth:打印的深度,缺省时打印最大深度。# filename:将返回的标识存成文件(生成的文件与当前运行的脚本在同一个路径下)
ctrl.scroll(direction, amount, count=1,) # 滚动# direction :"up", "down", "left", "right"# amount:"line" or "page"# count:int 滚动次数
ctrl.capture_as_image() # 返回控件的 PIL image对象,可继续使用其方法如下:# eg: ctrl.capture_as_image().save(img_path)
ret = ctrl.rectangle() # 控件上下左右坐标,(L430, T177, R1490, B941),可输出上下左右# eg: ret.top=177# ret.bottom=941# ret.left=430# ret.right=1490

Pywinauto基础03--控件操作相关推荐

  1. 五、QPushButton按钮和QLineEdit控件操作

    在第四节基础上,下面来进行QPushButton按钮和QLineEdit控件操作. 1.在主界面添加三个QLineEdit编辑框(其控件对象依次为lineEditNum1.lineEditNum2.l ...

  2. iOS基础——UI控件之UIAlertController、UINavigationController、Segue、SVProgressHUD

    iOS基础--UI控件之UIAlertController.UINavigationController.Segue 一.UIAlertController 1.普通对话框 -(void)update ...

  3. 206_QT_功能实现代码、界面控件操作代码分开实现,很不错【采用了Q_CLASSINFO、Q_PROPERTY、setProperty对控件设置属性、qobject_cast】

    动图: setProperty对控件设置属性,用于判断是哪一个控件,很巧妙 使用qobject_cast,对类指针进行下行转换,也很不错 qperson.h–年龄增加功能实现 #ifndef QPER ...

  4. HQChart使用教程5- K线图控件操作函数说明

    K线图控件操作函数说明 周期切换 切换股票 切换指标 增加一个窗口指标 AddIndexWindow indexName option 增加一个自定义通达信脚本指标窗口 AddScriptIndexW ...

  5. Android - 最基础的控件TextView

    TextView TextView是一个十分简单和基础的控件,相信大家使用TextView主要就是用来显示文字的, 而创建一个项目的时候,页面显示的就一个内容为Hello World 的 TextVi ...

  6. Python基础之day09-文件操作

    Python基础之day09-文件操作 文章目录 Python基础之day09-文件操作 一.文件打开与关闭 二.open函数参数 三.mode选项参数 四.file对象操作 五.文件备份案例 六.w ...

  7. 【JQuery Mobile移动应用开发实战】JQuery Mobile基础——列表控件的使用

    文章目录 5. 列表控件的使用 5.1 简单的新闻列表 5.2 音乐专辑列表的显示 5.3 更完善的音乐专辑列表 5.4 显示销售的商品列表 5.5 图书销量排名 5.6 简单的电话通讯录 5.7 让 ...

  8. Android开发基础之控件EditText

    目录 一.基础属性 二.在提示文本旁添加图片 三.获取EditText内容 四.监听事件 五.制作登录界面 一.基础属性 1.id 设置组件id 2.layout_width 宽度 3.layout_ ...

  9. Android开发基础之控件CheckBox

    目录 一.基础属性 二.自定义样式 1.去掉CheckBox的勾选框 2.自定义背景颜色 3.自定义勾选框的背景图片 三.监听事件 一.基础属性 1.layout_width 宽度 2.layout_ ...

  10. 在.Net中进行跨线程的控件操作(上篇:Control.Invoke)

    本文的重点在于介绍如何在多线程编程中,从非UI线程上访问界面中的控件.有过多线程编程经验的人都知道,当我们在非UI线程上试图给一个界面中的控件赋值的时候,比如说label的Text属性,系统会抛出一个 ...

最新文章

  1. Ubuntu13.04 配置smb服务器-new
  2. Spring 核心特性
  3. Java开启/关闭tomcat服务器
  4. favicon.ico在ie下面不显示的解决方法
  5. sqlserver 组内排序
  6. mysql查看表注释和字段注释
  7. 书评:《深入浅出数据分析》
  8. 《FLUENT 14流场分析自学手册》——1.3 附面层理论
  9. js案例:动态生成表格
  10. OPNsense用户手册-别名
  11. 学习springboot第一天
  12. Java hashCode详解
  13. CV面试知识点总结--机器学习
  14. 乐学成语——数据库创建(导入、打开)
  15. Processing学习 — Processing结合Kinect2实现人影互动
  16. C# GridView綁定RadioButtonList
  17. ASPICE SWE3之——模型生成软件详细设计1 配置
  18. 逻辑与和逻辑或的执行顺序
  19. pythonwhile true循环_python学习-while True的用法
  20. 软件测试app内存溢出,浅析软件测试人员如何对JVM进行内存溢出检测

热门文章

  1. 计算机毕业设计ssm基于ssm流浪宠物领养系统8xg84系统+程序+源码+lw+远程部署
  2. 浅谈禁忌搜索(TabuSearch)
  3. 如何快速优化手游性能问题?从UGUI优化说起
  4. Go实现简单的TCP服务端客户端通信(有黏包)
  5. 读picamera 文档总结(一)
  6. 浙江大学计算机学院博士论文格式,博士学位论文格式模板(浙江大学博士论文模板样例)...
  7. jq滚动小插件superslide2,的确是很强悍的
  8. 容联云AI问鼎“千言数据集—实体链指评测“,持续打造知识语义计算能力
  9. 哈希学习(2)—— Hashing图像检索资源
  10. C语言—判断100到200的素数