PC端自动化测试(二)

测试对象:

  • 窗口

  • 菜单

  • 文件

from pywinauto.application import Application
# 启动Navicat
app = Application("uia").start(r"D:\Navicat for MySQL\navicat.exe")
# 选择窗口
dlg = app["Navicat for MySQL"]
# 选择菜单
menu = dlg["menu"]
# 选择菜单项:文件
file = menu.child_window(title="文件")

查看控件类型

wrapper_object()

dlg.wrapper_object() # Dialog


menu.wrapper_object() # Menu


file.wrapper_object() # MenuItem

查看对象所支持的方法

dir()

dir(dlg.wrapper_object())

控件的文本内容获取

.texts()

file.texts() # ['文件']

获取子元素

.children()

dlg.children()
menu.children()
file.children()

获取控件的类名

.class_name()

menu.class_name()

获取控件的属性

menu.get_properties()

{
    'class_name': 'TActionMainMenuBar',
    'friendly_class_name': 'Menu',
    'texts': [''],
    'control_id': 6555556,
    'rectangle': <RECT L780, T151, R1980, B185>,
    'is_visible': True,
    'is_enabled': True,
    'control_count': 6,
    'is_keyboard_focusable': True,
    'has_keyboard_focus': True,
    'automation_id': '6555556'
}

截图

截图窗口

pic = dlg.capture_as_image()
pic.save("dlg.png")

截图菜单

pic1 = menu.capture_as_image()
pic1.save("menu.png")

截图菜单项

pic3 = file.capture_as_image()
pic3.save("file.png")

菜单操作

  • 获取菜单的子菜单项

menu.items()
  • 通过下标去选择菜单项

menu.item_by_index(1)
  • 通过路径去选择菜单项

menu.item_by_path('文件->新建连接...')

菜单项的方法

  • 获取菜单项

file.items()
  • 点击菜单项

file.click_input()
  • 点击新建连接

需要先点击文件出现了「新建连接...」后再点击

file.click_input()
menu.item_by_path("文件->新建连接...").click_input()

等待

  • wait

  • wait_not

参数
  1. wait_for:等待的状态

  • exists 表示该窗口是有效句柄

  • visible 表示该窗口未隐藏

  • enabled 表示未禁用窗口

  • ready 表示该窗口可见并启用

  • active 表示该窗口处于活动状态

  1. timeout:超时时间

  2. retry_interval:重试时间间隔

例子

# 等待窗口处于可见状态
new_dlg.wait(wait_for="ready",timeout=10,retry_interval=1)
print("等待通过,当前新建连接的窗口处于可见状态")


# 等待窗口不处于可见状态
new_dlg.wait_not(wait_for_not="ready",timeout=10,retry_interval=1)
print("等待通过,当前新建连接的窗口不处于可见状态")

等待CPU阀值

wait_cpu_usage_lower

参数
  1. threshold 该进程CPU占用率

  2. timeout:超时时间

  3. retry_interval:重试时间间隔

app.wait_cpu_usage_lower(threshold=20,timeout=5,usage_interval=1)
print("等待通过,当前该进程cup占用率低于%20")

timings模块

wait_until方法:

  • Timeout 超时时间

  • retry_interval 重试时间

  • func 执行的函数

  • value 比较的值

  • Op 比较函数(默认为相等)

  • args 给执行函数传位置参数

  • kwargs 给执行函数传递关键字参数

from pywinauto.timings import wait_until,Timings
# 等待work返回的结果为5,继续往下执行
wait_until(10, 1, work, 15)
  • 讲全局计时设为默认

Timings.Defaults()
  • 时间延长,脚本执行速度降低为1/2(慢2倍)

Timings.slow()
  • 时间间断,所有计时器/2(快两倍)

Timings.fast()
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值