前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PC端自动化测试(二)

PC端自动化测试(二)

作者头像
zx钟
发布2020-04-08 15:21:55
1.1K0
发布2020-04-08 15:21:55
举报
文章被收录于专栏:测试游记测试游记

测试对象:

  • 窗口
  • 菜单
  • 文件
代码语言:javascript
复制
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()

代码语言:javascript
复制
dlg.wrapper_object() # Dialog

menu.wrapper_object() # Menu

file.wrapper_object() # MenuItem

查看对象所支持的方法

dir()

代码语言:javascript
复制
dir(dlg.wrapper_object())

控件的文本内容获取

.texts()

代码语言:javascript
复制
file.texts() # ['文件']

获取子元素

.children()

代码语言:javascript
复制
dlg.children()
menu.children()
file.children()

获取控件的类名

.class_name()

代码语言:javascript
复制
menu.class_name()

获取控件的属性

menu.get_properties()

代码语言:javascript
复制
{
    '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'
}

截图

截图窗口

代码语言:javascript
复制
pic = dlg.capture_as_image()
pic.save("dlg.png")

截图菜单

代码语言:javascript
复制
pic1 = menu.capture_as_image()
pic1.save("menu.png")

截图菜单项

代码语言:javascript
复制
pic3 = file.capture_as_image()
pic3.save("file.png")

菜单操作

  • 获取菜单的子菜单项
代码语言:javascript
复制
menu.items()
  • 通过下标去选择菜单项
代码语言:javascript
复制
menu.item_by_index(1)
  • 通过路径去选择菜单项
代码语言:javascript
复制
menu.item_by_path('文件->新建连接...')

菜单项的方法

  • 获取菜单项
代码语言:javascript
复制
file.items()
  • 点击菜单项
代码语言:javascript
复制
file.click_input()
  • 点击新建连接

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

代码语言:javascript
复制
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:重试时间间隔

例子

代码语言:javascript
复制
# 等待窗口处于可见状态
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:重试时间间隔
代码语言:javascript
复制
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 给执行函数传递关键字参数
代码语言:javascript
复制
from pywinauto.timings import wait_until,Timings
# 等待work返回的结果为5,继续往下执行
wait_until(10, 1, work, 15)
  • 讲全局计时设为默认
代码语言:javascript
复制
Timings.Defaults()
  • 时间延长,脚本执行速度降低为1/2(慢2倍)
代码语言:javascript
复制
Timings.slow()
  • 时间间断,所有计时器/2(快两倍)
代码语言:javascript
复制
Timings.fast()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查看控件类型
  • 查看对象所支持的方法
  • 控件的文本内容获取
  • 获取子元素
  • 获取控件的类名
  • 获取控件的属性
  • 截图
    • 截图窗口
      • 截图菜单
        • 截图菜单项
        • 菜单操作
        • 菜单项的方法
        • 等待
          • 参数
            • 例子
              • 等待CPU阀值
                • 参数
              • timings模块
              相关产品与服务
              云数据库 MySQL
              腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档