PC端自动化测试(一)-程序员宅基地

PC端自动化测试(一)

pywinauto:同时支持控件操作和图像操作,支持Win32 API和MS UI Automation API

A set of Python modules to automate the Microsoft Windows GUI

安装

  • python3环境(python3.5以上)

  • pip环境

$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pywinauto

应用程序的可访问技术

支持控件的访问技术

Win32 API(backend=“win32”) 默认的backend

MFC,VB6,VCL简单的WinForms控件和大多数旧的应用程序

MS UI Automation API(backend=“uia”)

WinForms,WPF,Store apps,Qt5,浏览器

进程数量

单进程

Application作用范围是一个进程

跨进程

Desktop作用范围可以跨进程

GUI对象检查工具

Inspect.exe

spy++.exe

ViewWizard

打开应用程序

from pywinauto.application import Application


# 打开指定的应用程序


# 1. 打开windows自带的应用
app = Application(backend='uia').start("notepad.exe")


# 2. 打开任意一个应用程序
app = Application(backend='uia').start("exe路径")

连接已经打开的应用程序

  • 通过进程号

  • 通过窗口句柄

app = Application('uia').connect(process=4444)
app = Application('uia').connect(handle=1904040)

选择指定的窗口

# 方式一:app[类名/标题] :推荐使用该方式


# 1.通过窗口类型来选择
dlg = app["TNavicatMainForm"]


# 2.通过窗口标题来选择
dlg = app["Navicat for MySQL"]




# 方式二:app.类名
dlg =app.TNavicatMainForm


dlg.print_control_identifiers()

操作窗口

# 窗口最大化
dlg.maximize()


# 窗口最小化
dlg.minimize()


# 窗口恢复正常大小
dlg.restore()


# 查找窗口显示状态,最大化为1,正常为0
status = dlg.get_show_state()


# 获取当前窗口的坐标位置
rect = dlg.rectangle()
print(rect)# (L548,T194,R1768,B1043)


# 关闭窗口
dlg.close()

选择控件

控件:窗口上的内容

# 选择控件


# menu = dlg.Menu
menu = dlg["Menu"]
print(menu.print_control_identifiers()) # 查看Menu上的控件




file = menu.child_window(title="文件", control_type="MenuItem")
file.print_control_identifiers()

控件的分类

  • 状态栏 StatusBar

  • 按钮 Button

  • 单选框 RadioButton

  • 组合框 ComboBox

  • 编辑栏 Edit

  • 列表框 ListBox

  • 弹出菜单 PopupMenu

  • 工具栏 Toolbar

  • 树状视图 Tree View

  • 菜单项 MenuItem

  • 静态内容 Static

  • 复选框 CheckBox

  • 组框 GroupBox

  • 对话框 Dialog

  • 头部内容 Header

  • 列表显示控件 ListView

  • 选项卡控件 TabControl

  • 工具提示 ToolTips

  • 菜单 Menu

  • 窗格 Pane

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37786060/article/details/105085743

智能推荐

$finish/$stop_testbench finish-程序员宅基地

文章浏览阅读730次。$finish 在进行电路仿真时,如果遇到$finish,仿真器完成仿真并退出。$finish语句通常放到testbench的顶层文件中,如果testbench_top.v是顶层仿真文件,那么$finish应出现在仿真结束时刻。$stop 当遇到$stop时,仿真器 停止仿真,但不退出,它同事提供一个命令提示符,在命令提示符后面输入“.”,则仿真过程继续进行。..._testbench finish

stf java_“npm install -g stf”在Stf设置时显示错误-程序员宅基地

文章浏览阅读264次。“我正在尝试设置STF(SmartPhone测试服务器场),但在终端i中安装NPM并触发命令”npm install -g stf“我遇到了以下错误 . “ 在此处输入代码sh-3.2 #npm install -g stfnpm WARN不推荐使用[email protected]:改为使用uuid模块/ usr / local / bin / stf - > / usr / local ..._error path /usr/local/node/lib/node_modules/stf/node_modules/bufferutil

Mybatis-Generator代码生成器-程序员宅基地

文章浏览阅读156次。Mybatis-Generator代码生成器官方文档加入依赖: <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> &l_代码生成器

<pre></pre>预格式化标签_<pre></pre>是什么标记-程序员宅基地

文章浏览阅读1.5k次。可用来定义预格式化的标签_是什么标记

InstallAnywhere使用与下载_installanywhere下载-程序员宅基地

文章浏览阅读2.7k次。InstallAnywhere 简介(摘自百度百科&VeryCD)一个为多个平台产生的全方位的安装软件为多个平台提供解决方案是对软件生产商的一种挑战。许多解决方案都依赖于针对每种目标操作系统的自定义安装,它们都拥有自身的安装体验且需要单独的维护。所有这些问题都增加了额外的开发费用和支持成本、客户混淆度以及发布过程中不必要的时间浪费。理想的部署软件解决方案应为这些生产商提供一种方法来_installanywhere下载

C/C++编程:状态机的驱动表_状态机表格驱动法-程序员宅基地

文章浏览阅读930次。【代码】C/C++编程:状态机的驱动表。_状态机表格驱动法

随便推点

Caused by: There is no result type defined for type 'json' mapped with name 'success'. Did you mean-程序员宅基地

文章浏览阅读1.6k次。五月 07, 2017 5:30:03 下午 org.apache.catalina.core.AprLifecycleListener init信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on t_caused by: there is no result type defined for type 'json' mapped with name

Git在本地修改后并删除了一个文件后,从服务端拉取_本地删除的文件怎么从git上拉取-程序员宅基地

文章浏览阅读1.7k次。背景本地clone了一份代码,修改了一个文件内容,修改太多,想放弃.重新获取一份未修改前的代码.解决方案鼠标右击-> 打开 -> Git Bash Here (窗口如下)输入: git reset --hard HEAD分析解决方案git reset --hard HEAD 表示回退到当前版本, HEAD指向当前版本.如果你修改了一些代码,想去除,就可以使用 git reset --hard HEAD一次性去除.git reset --hard HEAD^表示回退到上一_本地删除的文件怎么从git上拉取

当class遇上console.log的坑,该怎么办?_class里面不能用console-程序员宅基地

文章浏览阅读453次。最近为了面试,疯狂刷题,当我遇到这个题;大脑已经崩塌,我开始钻牛角尖了,怎么办??? 干了这杯苦酒,下辈子不当程序员!!!先上题目: const chain=new Chain(); chain.eat().sleep(5).eat().sleep(6).eat().work() 输出结果是: console.log(eat->sleep(5)->eat->sleep(6)->eat-work);其实吧,题目很简单,只要class的方法返回自身就行;先上我的代码c._class里面不能用console

【数据分析与可视化】股票市场分析实战之历史趋势分析_数据分析与智能处理实践 股票趋势分析-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏8次。# 基本信息import numpy as npimport pandas as pdfrom pandas import Series, DataFrame# 股票数据读取import pandas_datareader as pdr# 可视化import matplotlib.pyplot as pltimport seaborn as sns#%matplotlib inline# timefrom datetime import datetimestart = dat_数据分析与智能处理实践 股票趋势分析

linux热点连上不通,一个WiFi模块开出多个热点(不可连接)-程序员宅基地

文章浏览阅读392次。效果图原理根据802.11协议,发现热点使用的是广播,并且是明文,所以在混杂模式下发送beacon帧或者在接收到Probe request之后返回Probe response即可模拟一个热点,接收到Association request 或者其它请求可以不用理会,这里的目的只是生成一个假热点,不会实现连接认证等步骤可以在这里查看相关资料,也可以百度beacon帧格式WiFi的帧格式如下:802.1..._linux device wifi 创建的热点 老是无法加入网络

在stm32开发可以调用c标准库的排序和查找 qsort bsearch_stm32 qsort调用-程序员宅基地

文章浏览阅读1.2k次。在嵌入式开发中,可以使用c标准库自带的库函数,而不用自己去早轮子,qsort和bsearch就是其中的两个比较好用的二分法查找,前提是已经排序好的数据。下面的代码,如果数据为排序,则要进行排序后,再查找。/* bsearch example */#include <stdio.h> /* printf */#include <stdlib.h> ..._stm32 qsort调用

推荐文章

热门文章

相关标签