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')

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

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

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

  1. 网页版登录入口_企业微信网页版怎么登录?企业微信客户端和网页版有什么区别?...

    文丨语鹦企服私域管家原创,未经授权不得转载 企业微信有网页版也有客户端,很多小伙伴可能搞不清,今天语鹦企服就带你一起看看,企业微信客户端和网页版有什么区别?以及如何登录使用. ▎企业微信网页版: 与微 ...

  2. Linux Zabbix——企业监控基于钉钉、企业微信实现自动化报警

    zabbix基于企业微信.钉钉群聊机器人实现自动化报警 在企业中,我们使用zabbix去进行监控,需要时刻关注应用服务的运行情况,这就少不了实时报警,而使用即时通讯软件报警相对就很方便. 监控环境准备 ...

  3. 企业微信(二)——请在企业微信客户端打开链接

    文章目录 目的 问题现象 一.PC端 二.移动端 总结 目的 总结在使用企业微信过程中碰到的问题,并记录解决办法. 问题现象 如下图,在接入企业微信接口进行免密登录功能实现的时候,访问企业微信的oau ...

  4. pywinauto WXWork(企业微信) 获取工作台中的信息

    需求1:家里有一个小店,需要订烟,中秋节前夕订烟日期调整,业务经理提前3天通知了,但是忘记了,然后就错过了,所以我要获取订烟时间,然后通过腾讯的sms,发送到几部手机上 需求2:某丝丽企业微信群需要每 ...

  5. 实现两个企业微信客户端登录

    1.下载procexp64.exe程序,并打开 2.在软件中找到企业微信进程 3.按着键盘ctrl+L键打开详细信息 4.关闭两个进程后,点击企业微信软件,运行成功如下 注意每次登陆需要操作一次关闭流 ...

  6. Appnium(三)企业微信UI自动化框架搭建

    前言 本章主要讲述针对[企业微信App]进行AppUI自动化测试框架的搭建 ps:这里底层用的是Appnium,另外写了一下底层Uiautomator2的简单搭建 UIautomator2框架搭建实战 ...

  7. 企业微信怎么通过手机号添加好友?企业微信添加好友话术!

    很多的企业的营销重心,逐渐从个人微信转向了企业微信,这是一个大趋势,但是在转变的过程中,肯定会损失一大半客户,虽舍不得却也无可奈何. 将客户从个人微信导向企业微信,有两种情况:第一,没有拿到客户的手机 ...

  8. 企业微信如何快速高效添加好友?

    企业微信营销功能逐渐完善,且具备合规的第三方营销工具,吸引了众多的企业使用企业微信运营客户,那么怎么样让用户高效率的添加企业微信呢,接下来为大家分享一下我们的经验! 群发微信通讯录,引导好友添加企业微 ...

  9. 企业微信客户端开启调试模式

    开发企业微信工作台要想看请求调试,就要开启调试模式 开启调试模式快捷键 shift + Ctrl + Alt + D 开启调试模式后,随便进入一个页面,右键点击就会出现showDevTools.点击这 ...

最新文章

  1. JPush 使用教程
  2. isdigit函数在C语言什么意思,C 库函数 isdigit() 使用方法及示例
  3. 远程登录linux进程的状态_Linux实操篇 - 远程登录到Linux系统
  4. Zookeeper源码解读
  5. linux top 命令信息解释
  6. 解析Java多线程的两点误区你必知的
  7. 使用jOOQ的MockDataProvider破解简单的JDBC ResultSet缓存
  8. linux 内存溢出排查_【开发者成长】JAVA 线上故障排查完整套路!
  9. goodbye cnblogs
  10. 【2031】求一元三次方程的解
  11. python安装第三方库出现问题怎么办_关于Python第三方库安装失败问题的解决方案...
  12. 武汉市公积金提取流程
  13. 智遥工作流将数据导出到Excel分析
  14. springmvc+vue ssm 医院预约挂号系统#毕业设计
  15. UE4UMG系统入门
  16. Java复制一个文件到新文件夹中,并对新文件重命名
  17. HEIF图像编码标准-python读取HEIF图像
  18. IT服务管理指标体系与报表体系
  19. 资质认证|棱镜七彩成功通过CMMI 3级认证,研发能力获国际权威机构认可!
  20. 分享一个 Excel 做的三国杀 游戏 ,想学EXCEL的绝对受用。

热门文章

  1. linux efi 引导,Ubuntu 16.04引导错误修复 - EFI
  2. Ignition Perspective Design Tips
  3. Fl Studio 21中文版安装包下载,FL 21支持Mac版新增对苹果M1M2家族芯片原生支持
  4. php做钓鱼视频教程,钓鱼人作品--我做珠珠的一些过程希望对大家有用
  5. 苹果a10处理器_苹果发布新品,A10处理器,1599元起!超级不划算!
  6. DNS域名解析,以及A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR说明
  7. Shell里内置数组BASH_REMATCH[n]个人解析
  8. github源码下载慢问题
  9. maven项目进行单元测试时报错:Method initializationError not found;Openning the test class
  10. 地平线4闪退解决方法