pywinauto+pytesseract实现企业微信客户端自动化批量添加好友

1.项目介绍

本项目主要是利用 pywinauto 自动化操作和 pytesseract OCR图片识别技术,实现了企业微信的批量添加好友操作,解放双手,摆脱重复的工作,减轻工作压力。 目前市面上还是有很多软件都是客户端形式的,比如说 QQ,微信,企业微信等等,selenium 也只能是实现网页端的自动化操作, 但是pywinauto的出现弥补了这一弊端,pywinauto 可以操作电脑客户端软件,并且非常好用和实用。但是pywinauto 有很多窗口也是无法识别到的,就比如企业微信使用pywinauto也只能是识别出主窗口,其他窗口还是识别不了的。所以这里就用到了pytesseract OCR 图片文字识别技术,可以把 窗口中的文字识别出来,然后判断程序执行到哪一步,然后再根据pywinauto 获取到的坐标进行点击操作。

2.项目实现过程

2.1 安装+测试pytesseract

前面的一篇博客已经详细讲解过了,这里不再描述,详情请戳这里

2.2 安装+测试pywinauto

2.2.1 pip 安装 pywinauto

pip install pywinauto -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

2.2.2 安装好之后就要确定使用技术(‘win32’ or ‘uia’)

​ 如不能确定程序到底适用于那种backend,可以借助于GUI对象检查工具来做,常用的检查工具有Inspect.exe,Spy++ 等, 可以自行找地方下载,或使用下方夸克网盘链接进行下载。 下载好软件直接找到Inspect .exe运行就好了,具体的使用方法可以百度或者自行研究一下,像Inspect.exe 将左上角的下拉列表中切换到“UI Automation”,然后鼠标点一下你需要测试的程序窗体,inspect就会显示详细的信息。如果显示为“拒绝访问”,那么程序的backend就是win32,如下图所示。
在这里插入图片描述

然后就使用Spy++来查找窗口的句柄、标题、类等信息。
在这里插入图片描述

2.2.3 测试 pywinauto

测试代码

# 确定好 backend 为 uia
# start 这里填写所要运行程序的地址:
Application(backend='uia').start('D:\WXWORK\WXWork\WXWork.exe')
# 连接到企业微信
app = Application(backend='uia').connect(title='企业微信')
# 选中企业微信的窗口
wind_calc = app['企业微信']
# 获取当前窗口显示的坐标
coordinate = wind_calc.rectangle()
print(coordinate )

# 打印值为: <RECT L234, T167, R1154, B817>

如果能够打印出当前窗口的详细坐标,那么则表示测试成功, 这个库需要调用 win32 这个库,如果有报错,可以查看我的 这篇文档(点击这里)

2.3 实现代码

# start 这里填写所要运行程序的地址:
Application(backend='uia').start('D:\WXWORK\WXWork\WXWork.exe')
# 连接到企业微信
app = Application(backend='uia').connect(title='企业微信')
# 选中企业微信的窗口
wind_calc = app['企业微信']
# 获取当前窗口显示的坐标
coordinate = wind_calc.rectangle()
# 程序左边缘距离显示器左边缘的像素
l_coordinate = coordinate.left
# 程序右边缘距离显示器左边缘的像素
r_coordinate = coordinate.right
# 程序上边缘距离显示器上边缘的像素
t_coordinate = coordinate.top
# 程序下边缘距离显示器上边缘的像素
b_coordinate = coordinate.bottom

# 1.打开通讯录
mouse.click(coords=(l_coordinate + 25, b_coordinate - 220))

# 2. 点击新的联系人
mouse.click(coords=(l_coordinate + 150, t_coordinate + 80))

# 3.点击右上角添加
mouse.click(coords=(r_coordinate - 60, t_coordinate + 37))

#  等待机制 看看是否有窗口弹出来
wind_new = app['添加新联系人']
# 等待窗口处于可见状态 retry_interval 重新检测间隔
wind_new.wait(wait_for='ready', timeout=10, retry_interval=2)
l_coordinate_new = coordinate_new.left
r_coordinate_new = coordinate_new.right
t_coordinate_new = coordinate_new.top
b_coordinate_new = coordinate_new.bottom

 # 点击输入手机号的框
mouse.click(coords=(l_coordinate_new + 100, t_coordinate_new + 92))
write_info(phone)
# 按下回车进行搜索  # # 回车键
send_keys("{VK_RETURN}")

# 搜索之后的所有窗口,都是检测不到的,所以需要用到 COR 图片文字识别技术,这里直接导入pytesseract
wind_new.capture_as_image()  # 窗口截图

# 将截图进行图片识别
pytesseract.image_to_string(wind_new.capture_as_image(), lang='chi_sim', config='--psm 6')

然后具体的一些实现逻辑都是一些重复的工作量了,这里不多描述,如果还有不懂的可以私信作者

点击链接即可下载。
链接:请戳这里

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值