python进行简单的app自动化测试(pywinauto)+ 截屏微信二维码

news/2025/2/12 4:36:53/

一、开始需要了解准备

1、安装

pip install pywinauto

2、选择(后面会通过工具进行判断用哪个)

在这里插入图片描述

3、自动化控制进程的范围

在这里插入图片描述

示例

Application单进程
在这里插入图片描述

Desktop多进程

在这里插入图片描述

4、程序辅助检测工具

在这里插入图片描述
3中的下载连接
链接

点击放大镜拖到对应位置即可

二、简单的开始

1、打开应用程序

在这里插入图片描述

from pywinauto.application import Application# 打开指定的程序
### 1、打开自带的记事本
app = Application(backend="uia").start("notepad.exe")### 2、 打开qq r为转义符
app = Application(backend="uia").start(r"D:\qq\Bin\QQScLauncher.exe")

2、使用句柄工具

在这里插入图片描述
拖着放大镜到打开的应用上就可以看到信息
在这里插入图片描述

每次打开都会改变的

3、去连接你打开的应用程序(已经打开的窗口)

from pywinauto.application import Applicationif __name__ == '__main__':# 通过进程号进行连接# app = Application("uia").connect(process=16264)# print(app)# 通过窗口句柄进行连接app = Application("uia").connect(handle=265004)print(app)

4、如何选择对应的窗口

ps注意这里win32打不开就去换成uia

在这里插入图片描述

from pywinauto.application import Applicationif __name__ == '__main__':# 启动qqapp = Application("win32").start(r"D:\qq\Bin\QQ.exe")# 方式一 app[类名/标题]  推荐# 使用类名选择窗口dlg = app["TXGuiFoundation"]# 通过窗口标题# dlg = app["QQ"]# 方式二 app.类名# dlg = app.TXGuiFoundation# 打印窗口所有的控件dlg.print_control_identifiers()

5、窗口的操作方法

from pywinauto.application import Applicationif __name__ == '__main__':# 启动qqapp = Application("win32").start(r"D:\qq\Bin\QQ.exe")# 方式一 app[类名/标题]  推荐# 使用类名选择窗口# dlg = app["TXGuiFoundation"]# 通过窗口标题# dlg = app["QQ"]# 方式二 app.类名dlg = app.TXGuiFoundation# 打印窗口所有的控件dlg.print_control_identifiers()# 窗口最大化dlg.maximize()# 窗口最小化 就是窗口的-的意思 qq最小化托盘dlg.minimize()#恢复dlg.restore()# 获取窗口状态state = dlg.get_show_state()# 坐标rect = dlg.rectangle()# 关闭窗口dlg.close()

下面是坐标
在这里插入图片描述

三、简单案例

上述的资料我没了解太多,万事开头难,上去就给我报了太多错就不看他们的资料学习了,这里换了一套看着比较简单

这是视频地址

1、标题(title_re ,在已经打开的时候会用到)re代表正则

鼠标停留在任务栏中
在这里插入图片描述

2、小技巧(获取窗口)

from pywinauto.findwindows import find_elementsif __name__ == '__main__':# 查看当前窗口都有哪些可选中 或者替换为win32wins = find_elements(backend="uia")print(wins)

3、简单点击事件

注意要把微信移到最前面并且不能动鼠标

from pywinauto import Applicationif __name__ == '__main__':app = Application(backend="uia").connect(title_re="微信")# 查看窗口的对话框dlgs = app.windows()print(dlgs)#  进入对话框dlg = app.window(title="微信")# 找到对应文字btn = dlg['仅传输文件']# 点击事件btn.click_input()

4、显示选中的元素,用颜色框住

btn.draw_outline(colour='red')

from pywinauto import Applicationif __name__ == '__main__':app = Application(backend="uia").connect(title_re="微信")#  进入对话框dlg = app.window(title="微信")# 找到对应文字btn = dlg['登录']btn.draw_outline(colour='red')# 点击事件# btn.click_input()

5、使用工具定位

在这里插入图片描述

6、获取微信获取更多信息的版本

在这里插入图片描述

1、定位到按钮

from pywinauto.application import Applicationif __name__ == '__main__':app = Application(backend="uia").connect(title_re="微信")#  进入对话框dlg = app.window(title="微信")# 让微信还原到界面上dlg.restore()# 根据条件去匹配find_elements()函数中查看都有哪些字典值  dlg["设置及其他"]#  btn = dlg["设置及其他"]kwargs = {"title":"设置及其他"}btn = dlg.child_window(**kwargs)# 红圈btn.draw_outline(colour='red')
2、使用打印(不要动鼠标 不然打印白瞎)

由于现在1、中的这个设置会点击才可以展示,所以UISpy就定位不到对应的位置所以我们就打印


from pywinauto.application import Applicationif __name__ == '__main__':app = Application(backend="uia").connect(title_re="微信")#  进入对话框dlg = app.window(title="微信")# 让微信还原到界面上dlg.restore()# 根据条件去匹配kwargs = {"title":"设置及其他"}btn = dlg.child_window(**kwargs)#btn.draw_outline(colour='red')dlg.print_control_identifiers()

小技巧我们可以看到打印的内容,也就dlg.这个方法就可以定位到元素 dlg.child_window(**kwargs) 改为文字横线一样会定位到
在这里插入图片描述
新点出来的一般在上面,你从打印开头开始找找到就接着写

import timefrom pywinauto.application import Applicationif __name__ == '__main__':app = Application(backend="uia").connect(title_re="微信")#  进入对话框dlg = app.window(title="微信")# 让微信还原到界面上dlg.restore()# 根据条件去匹配btn = dlg["设置及其他"]#点击btn.click_input()dlg.child_window(title="设置", control_type="Button").click_input()
3、最后结果

在这里插入图片描述

import timefrom pywinauto.application import Applicationif __name__ == '__main__':app = Application(backend="uia").connect(title_re="微信")#  进入对话框dlg = app.window(title="微信")# 让微信还原到界面上dlg.restore()# 根据条件去匹配btn = dlg["设置及其他"]#点击btn.click_input()dlg.child_window(title="设置", control_type="Button").click_input()#  切换窗口app1 = Application(backend="uia").connect(title_re="设置")dlg = app1.window(title="设置")dlg.restore()btn1 = dlg["关于微信"]btn1.click_input()version = dlg.child_window(title_re = "微信 .*").texts()print(version)

7、微信文件助手发送消息

1、输入文字 选中窗口
import timefrom pywinauto.application import Application
from pywinauto.keyboard import send_keysif __name__ == '__main__':app = Application(backend="uia").connect(title_re="微信")#  进入对话框dlg = app.window(title="微信")# 让微信还原到界面上dlg.restore()# 根据条件去匹配btn = dlg["聊天"]btn.click_input()dlg.child_window(title="搜索").click_input()send_keys("文件传输助手")dlg.child_window(title="文件传输助手", control_type="ListItem").click_input()# 选中文件传输助手 第二种方案"""dlg.set_focus()  # 激活窗口time.sleep(1)send_keys("{ENTER}")"""
2、发送

这边看发送定位按钮自己去点击即可,这边就不写了,自己玩玩吧

8、打开软件并且进行点击注册账号

import timefrom pywinauto.application import Application
from pywinauto.keyboard import send_keysif __name__ == '__main__':# 启动qqapp = Application("uia").start(r"D:\qq\Bin\QQScLauncher.exe")time.sleep(1)con = app.connect(title_re = "QQ")qq = con.window(title="QQ")qq.child_window(title="注册帐号", control_type="Button").click_input()

四、截屏微信登录二维码

注意需要把界面app拿出来到页面上哦


from pywinauto.application import Application
from PIL import ImageGrabif __name__ == '__main__':# 启动qqapp = Application("uia").connect(title = "微信")wx = app.window(title="微信")rect = wx.child_window(title="二维码").rectangle()### 截屏坐标  不加参数就是全屏截图screenshot = ImageGrab.grab(bbox=(rect.left, rect.top, rect.right, rect.bottom))### 展示图片是阻塞方法x掉后才会进行后面screenshot.show()

五、切换页面(模拟 Alt + Tab 切换窗口)

from pywinauto.keyboard import send_keys
# 模拟 Alt + Tab 切换窗口
send_keys('%{TAB}')

六、窗口顶置

import win32gui
import win32con# 获取目标窗口的句柄hwnd = win32gui.FindWindow(None, "QQ")  # 替换为你要置顶窗口的标题# 将目标窗口置顶if hwnd:win32gui.ShowWindow(hwnd, win32con.SW_SHOW)win32gui.SetForegroundWindow(hwnd)

http://www.ppmy.cn/news/1299111.html

相关文章

自行车商城网站网页设计与制作web前端设计html+css+js成品。电脑网站制作代开发。vscodeDrea

【自行车商城网站网页设计与制作web前端设计htmlcssjs成品。电脑网站制作代开发。vscodeDrea】 https://www.bilibili.com/video/BV1wT4y1p7jq/?share_sourcecopy_web&vd_sourced43766e8ddfffd1f1a1165a3e72d7605

推理证明-条件等价式、德摩根律、双条件

对于命题逻辑部分来说,只需要掌握命题的符号化,以及如何进行推理证明即可。足矣。其他的都是一些基本的概念,扫一遍,记住即可。 对于什么是命题:陈述句、能判断、真值唯一 进行推理证明,我们需要记住以下…

数据结构第2章 栈和队列

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 0、思维导图栈和队列1、栈1)特点2&#xff0…

2023-12-30 买卖股票的最佳时机 II和跳跃游戏以及跳跃游戏 II

122. 买卖股票的最佳时机 II 思路:关键点是每一次利用峰值来计算【画图好理解一点,就是计算陡坡的值】!每一次累加和的最大! 或者可以这样理解,把利润划分为每天的,如假如第 0 天买入,第 3 天卖出&#xf…

Python学习笔记-使用Anaconda+VSCode配置开发环境

文章目录 概述一、安装Anaconda1.1 下载软件1.2 安装anaconda1.3 配置环境 二、配置虚拟环境2.1 使用conda创建一个新的虚拟环境2.1.1 使用search指令查看支持的python的版本:2.1.2 使用create创建指定版本的虚拟环境:2.1.3 使用env list查看虚拟环境列表…

Android 车联网——CarUxRestrictionsManagerService介绍(十六)

在前面文章中经常提到 UX Restrictions,这里我们就来分析一下 CarUxRestrictions 相对应的 Manager 和 Service。 一、简介 CarUxRestrictionsManagerService 是安卓汽车平台中的一个核心服务,旨在管理汽车交互体验时的用户体验限制。它允许车载应用程序根据许多方面的限制…

echarts设置tooltip的层级

echarts设置tooltip的层级 tooltip: {trigger: "axis",extraCssText: z-index:3, // 修改层级borderColor: "rgba(0, 170, 255)",}, 完整的option示例如下: option {tooltip: {trigger: "axis",extraCssText: z-index:3,axisPoin…

在线双目测宽仪 板材实时监测和数据分析!

在各种板材类生产领域里,在线品质检测技术都是非常重要的,它很大程度上决定了生产的质量。在线双目测宽仪就是当前很受欢迎的一种宽度在线检测设备,它采用了双目视觉检测技术,实现宽度尺寸的在线检测,功能十分强大&…