当前位置: 首页 > news >正文

【Pywinauto库】8.4 pywinauto.timings模块

概述

pywinauto.timings 模块包含所有 pywinauto 的全局时序设置,用于控制自动化操作的时间间隔、超时和重试策略。

主要配置对象

该模块有一个对象应该用于所有时序调整:

from pywinauto import timings# 使用 Timings 对象进行配置
timings.Timings

预定义设置

有几个预定义的设置可以快速配置时序:

# 快速模式 - 最小化等待时间
timings.Timings.fast()# 默认模式 - 标准等待时间
timings.Timings.defaults()# 慢速模式 - 增加等待时间以适应慢速系统
timings.Timings.slow()

可调整的时序设置

以下是所有可以调整的各个时序设置及其默认值:

窗口查找相关
  • window_find_timeout (默认 5) - 查找窗口的超时时间(秒)
  • window_find_retry (默认 .09) - 查找窗口的重试间隔(秒)
应用程序相关
  • app_start_timeout (默认 10) - 应用程序启动超时时间(秒)
  • app_start_retry (默认 .90) - 应用程序启动重试间隔(秒)
  • app_connect_timeout (默认 5.) - 应用程序连接超时时间(秒)
  • app_connect_retry (默认 .1) - 应用程序连接重试间隔(秒)
CPU 使用率相关
  • cpu_usage_interval (默认 .5) - CPU 使用率检查间隔(秒)
  • cpu_usage_wait_timeout (默认 20) - CPU 使用率等待超时(秒)
存在性检查
  • exists_timeout (默认 .5) - 存在性检查超时(秒)
  • exists_retry (默认 .3) - 存在性检查重试间隔(秒)
点击操作后等待
  • after_click_wait (默认 .09) - 点击后等待时间(秒)
  • after_clickinput_wait (默认 .09) - 输入点击后等待时间(秒)
  • after_menu_wait (默认 .1) - 菜单操作后等待时间(秒)
键盘输入
  • after_sendkeys_key_wait (默认 .01) - 发送按键后等待时间(秒)
按钮操作
  • after_button_click_wait (默认 0) - 按钮点击后等待时间(秒)
窗口关闭
  • before_closeclick_wait (默认 .1) - 关闭点击前等待时间(秒)
  • closeclick_retry (默认 .05) - 关闭点击重试间隔(秒)
  • closeclick_dialog_close_wait (默认 2) - 关闭对话框等待时间(秒)
  • after_closeclick_wait (默认 .2) - 关闭点击后等待时间(秒)
  • after_windowclose_timeout (默认 2) - 窗口关闭后超时(秒)
  • after_windowclose_retry (默认 .5) - 窗口关闭后重试间隔(秒)
焦点设置
  • after_setfocus_wait (默认 .06) - 设置焦点后等待时间(秒)
  • setfocus_timeout (默认 2) - 设置焦点超时(秒)
  • setfocus_retry (默认 .1) - 设置焦点重试间隔(秒)
光标位置
  • after_setcursorpos_wait (默认 .01) - 设置光标位置后等待时间(秒)
消息发送
  • sendmessagetimeout_timeout (默认 .01) - 发送消息超时(秒)
控件操作
  • after_tabselect_wait (默认 .05) - 标签选择后等待时间(秒)
  • after_listviewselect_wait (默认 .01) - 列表视图选择后等待时间(秒)
  • after_listviewcheck_wait (默认 .001) - 列表视图检查后等待时间(秒)
  • listviewitemcontrol_timeout (默认 1.5) - 列表视图项控制超时(秒)
  • after_treeviewselect_wait (默认 .1) - 树视图选择后等待时间(秒)
  • after_toobarpressbutton_wait (默认 .01) - 工具栏按钮按下后等待时间(秒)
  • after_updownchange_wait (默认 .1) - 上下控件变化后等待时间(秒)
  • after_movewindow_wait (默认 0) - 移动窗口后等待时间(秒)
  • after_buttoncheck_wait (默认 0) - 按钮检查后等待时间(秒)
  • after_comboboxselect_wait (默认 .001) - 组合框选择后等待时间(秒)
  • after_listboxselect_wait (默认 0) - 列表框选择后等待时间(秒)
  • after_listboxfocuschange_wait (默认 0) - 列表框焦点变化后等待时间(秒)
  • after_editsetedittext_wait (默认 0) - 编辑文本设置后等待时间(秒)
  • after_editselect_wait (默认 .02) - 编辑选择后等待时间(秒)
拖放操作
  • drag_n_drop_move_mouse_wait (默认 .1) - 拖放移动鼠标等待时间(秒)
  • before_drag_wait (默认 .2) - 拖拽前等待时间(秒)
  • before_drop_wait (默认 .1) - 放置前等待时间(秒)
  • after_drag_n_drop_wait (默认 .1) - 拖放后等待时间(秒)
滚动操作
  • scroll_step_wait (默认 .1) - 滚动步骤等待时间(秒)

TimeConfig 类

Defaults(*args, **kwargs)

将所有时间设置为默认时间。

Fast(*args, **kwargs)

设置快速计时值。目前,这会以下列方式改变时间:

  • timeouts = 1 second
  • waits = 0 seconds
  • retries = .001 秒(最低限度!)
  • 如果现有时间更快,那么保持现有时间
Slow(*args, **kwargs)

设置慢速计时值。目前,这会以下列方式改变时间:

  • timeouts = default timeouts * 10
  • waits = default waits * 3
  • retries = default retries * 3
  • 如果现有时间较慢,则保持现有时间
defaults()

将所有时间设置为默认时间。

fast()

设置快速计时值。

slow()

设置慢速计时值。

异常类

TimeoutError

超时异常类。

工具函数

always_wait_until(timeout, retry_interval, value=True, op=<built-in function eq>)

装饰器,每次都要调用 wait_until(...) 作为装饰函数/方法。

always_wait_until_passes(timeout, retry_interval, exceptions=<class 'Exception'>)

装饰器,每次都要调用 wait_until_passes(...) 作为装饰函数/方法。

timestamp()

获取精确的时间戳。

wait_until(timeout, retry_interval, func, value=True, op=<built-in function eq>, *args, **kwargs)

等到 op(function(*args, **kwargs), value) 为 True 或直到超时到期。

参数:

  • timeout: 函数将尝试该函数多长时间
  • retry_interval: 重试之间等待多长时间
  • func: 将要执行的功能
  • value: 要比较的值(默认为 True)
  • op: 比较函数(默认为相等)
  • args: 调用时传递给 func 的可选参数
  • kwargs: 调用时要传递给 func 的可选关键字参数

返回: 函数的返回值。如果操作超时,则函数的返回值位于引发的异常的 function_value 属性中。

示例:

try:# 等待最多10.5秒,对象item_count()方法返回10,以0.5的增量递增wait_until(10.5, .5, self.item_count, 10)
except TimeoutError as e:print("timed out")
wait_until_passes(timeout, retry_interval, func, exceptions=<class 'Exception'>, *args, **kwargs)

等到 func(*args, **kwargs) 没有引发其中一个例外。

参数:

  • timeout: 函数将尝试该函数多长时间
  • retry_interval: 重试之间等待多长时间
  • func: 将要执行的功能
  • exceptions: 要测试的异常列表(默认值:Exception)
  • args: 调用时传递给 func 的可选参数
  • kwargs: 调用时要传递给 func 的可选关键字参数

返回: 函数的返回值。如果操作超时,则引发的原始异常位于引发的异常的 original_exception 属性中。

示例:

try:# 等待最多10.5秒,以每秒0.5的增量找到窗口wait_until_passes(10.5, .5, self.Exists, (ElementNotFoundError,))
except TimeoutError as e:print("timed out")raise e.original_exception

使用示例

自定义时序配置
from pywinauto import timings# 设置自定义时序
timings.Timings.window_find_timeout = 10  # 增加窗口查找超时
timings.Timings.after_click_wait = 0.2   # 增加点击后等待时间# 或者使用预定义配置
timings.Timings.slow()  # 使用慢速模式
使用等待函数
from pywinauto.timings import wait_until, wait_until_passes# 等待条件成立
def check_window_ready():return window.is_visible() and window.is_enabled()wait_until(10, 0.5, check_window_ready)# 等待操作成功
def risky_operation():# 可能抛出异常的操作window.click()wait_until_passes(5, 0.1, risky_operation, exceptions=(ElementNotFoundError,))

文章转载自:

http://zx4hT6dF.tntgc.cn
http://VkxmkiE7.tntgc.cn
http://32qbLQkr.tntgc.cn
http://2ALCkDAR.tntgc.cn
http://svtBy3yF.tntgc.cn
http://HCEaHUtz.tntgc.cn
http://WkpNLiv8.tntgc.cn
http://8ffScNeY.tntgc.cn
http://tZMvBuXi.tntgc.cn
http://eqQqcE2J.tntgc.cn
http://M9u3OKAN.tntgc.cn
http://Ws4eTMjo.tntgc.cn
http://SmySenNU.tntgc.cn
http://LX5qcSSA.tntgc.cn
http://vGEWnxSt.tntgc.cn
http://3BjLJec9.tntgc.cn
http://Zfu7ax9X.tntgc.cn
http://gTQdpb3R.tntgc.cn
http://uX1HSmlG.tntgc.cn
http://be17vWv7.tntgc.cn
http://trHHJPE4.tntgc.cn
http://kuYbCerY.tntgc.cn
http://v5NmcXIM.tntgc.cn
http://gRuAv9IO.tntgc.cn
http://zirasUkN.tntgc.cn
http://SzSAgUGv.tntgc.cn
http://UzuXkL6L.tntgc.cn
http://PM646m4f.tntgc.cn
http://u0vZWFtH.tntgc.cn
http://8seo6hOr.tntgc.cn
http://www.dtcms.com/a/376938.html

相关文章:

  • 4.7 静态分支, 动态分支和变体
  • LangGraph中ReAct模式的深度解析:推理与行动的完美融合——从理论到实践的智能Agent构建指南
  • 【机械故障】使用fir滤波器实现数据拟合
  • vue3 中 npm install mammoth 与 npm install --save mammoth 的主要区别说明
  • Milvus基于docker主机外挂实践
  • 从零搭建企业级日志系统:Web + App 全端解决方案实战!
  • 【算法--链表】138.随机链表的复制--通俗讲解
  • Nodejs(③Stream)
  • iOS 26支持的设备列表
  • 日记 - 2025.9.10 读研日记(一)
  • 【JVM】故障诊断和性能监控命令
  • Java大厂面试实录:在线教育场景下微服务架构与智能推荐实践(含技术详解)
  • 实战:HarmonyOS 中 HEIF 图像开发全流程(转码篇 兼容场景)
  • 融智学生活方式DBA 小生境融智:身心健康就是美,抓住刚需就是赢
  • 【高级】系统架构师 | 2025年上半年综合真题DAY3
  • CentOS 7部署Zabbix5.0
  • [rStar] 策略与奖励大语言模型
  • 使用命令centos把普通用户设置为管理员
  • 机器学习实操项目03——Scikit-learn介绍及简单分类案例
  • 了解网站安全监测系统的重要性
  • 图像尺寸和CMOS的关联
  • 视频转webp批量处理工具哪个好?这里有答案
  • cuda-NCCL笔记(3)-- 分布式训练LeNet
  • Android Studio开发环境配置
  • 【springboot+vue3】博客论坛管理系统(源码+文档+调试+基础修改+答疑)
  • 中台的万象
  • 从Grok 4多智能体协同到RAG范式革命:2025年AI工作流的技术重构
  • pythonFlask 使用 SQLAlchemy 的连接池
  • 【系统架构设计(25)】Web应用服务器与现代架构
  • minikube 的 kubernetes 入门教程-Nginx Proxy Manager