第三章 牛刀小试—企业微信自动健康上报

770 阅读3分钟

设置自动邮箱发送

import smtplib
from email.mime.text import MIMEText
# 定义发送邮箱方法
def sentEmail(text):
    # 设置服务器所需信息
    # 163邮箱服务器地址
    mail_host = 'smtp.163.com'
    # 163用户名
    mail_user = '123456789'
    # 密码(部分邮箱为授权码)
    mail_pass = 'xxx'
    # 邮件发送方邮箱地址
    sender = '123456789@163.com'
    # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
    receivers = ['123456789@qq.com']

    # 设置email信息
    # 邮件内容设置
    message = MIMEText(text, 'plain', 'utf-8')
    # 邮件主题
    message['Subject'] = '自动健康上报结果'
    # 发送方信息
    message['From'] = sender
    # 接受方信息
    message['To'] = receivers[0]

    # 登录并发送邮件
    try:
        smtpObj = smtplib.SMTP()
        # 连接到服务器
        smtpObj.connect(mail_host, 25)
        # 登录到服务器
        smtpObj.login(mail_user, mail_pass)
        # 发送
        smtpObj.sendmail(
            sender, receivers, message.as_string())
        # 退出
        smtpObj.quit()
        print('success')
    except smtplib.SMTPException as e:
        print('error', e)  # 打印错误

企业微信自动化操作

下载安装企业微信

image.png

企业微信下载链接:企业微信

使用大漠插件编写脚本(不需要注册VIP功能,免费使用)

import win32com.client
import time
dm = win32com.client.Dispatch('dm.dmsoft')
dm.setpath("D:\GameDMTest")  # 该目录为你截图保存图片的地址,因为后面需要找图,这里提供路径

whTime = 0  # 循环计时,每次找图都循环计时,当超过一定时间找不到图就发送失败信息给邮箱

# 打开企业微信
ret_weixin = dm.findpice(0, 0, 1920, 1080, "weixin.bmp", '050505', 0.9, 0)  # 找图
print(ret_weixin)
ret_weixin_pos = ret_weixin.split("|")
# 判断是否找到图,因为有些界面加载需要时间,所以循环找图,超过一定时间就是找不到返回失败,直接结束进程
while int(ret_weixin_pos[1]) <= 0:
    ret_weixin = dm.findpice(0, 0, 1920, 1080, "weixin.bmp", '050505', 0.9, 0)  # 找图
    ret_weixin_pos = ret_weixin.split("|")
    whTime += 1
    print(whTime)
    # 超过时间了,发送失败提醒邮箱,然后结束进程
    if whTime >= 500:
        sentEmail('打开企业微信失败,请自己健康上报!')
        exit()  # 结束
whTime = 0  # 找到图,计时清零
dm.moveto(ret_weixin_pos[1], ret_weixin_pos[2])  # 移动鼠标到这个点
dm.leftdoubleclick()  # 左键双击

# 如下反复同样操作,不额外写备注

# 点击工具箱
ret_gongjixiang = dm.findpice(0, 0, 1920, 1080, "gongjixiang.bmp", '050505', 0.9, 0)  # 找图
ret_gongjixiang_pos = ret_gongjixiang.split("|")
while int(ret_gongjixiang_pos[1]) <= 0:
    ret_gongjixiang = dm.findpice(0, 0, 1920, 1080, "gongjixiang.bmp", '050505', 0.9, 0)  # 找图
    ret_gongjixiang_pos = ret_gongjixiang.split("|")
    whTime += 1
    if whTime >= 500:
        sentEmail('点击工具箱失败,请自己健康上报!')
        exit()  # 结束
whTime = 0
dm.moveto(ret_gongjixiang_pos[1], ret_gongjixiang_pos[2])  # 移动鼠标到这个点
dm.leftclick()  # 左键单击

# 点击健康上报界面
ret_jiankang = dm.findpice(0, 0, 1920, 1080, "jiankang.bmp", '050505', 0.9, 0)  # 找图
ret_jiankang_pos = ret_jiankang.split("|")
while int(ret_jiankang_pos[1]) <= 0:
    ret_jiankang = dm.findpice(0, 0, 1920, 1080, "jiankang.bmp", '050505', 0.9, 0)  # 找图
    ret_jiankang_pos = ret_jiankang.split("|")
    whTime += 1
    if whTime >= 500:
        sentEmail('点击健康上报界面失败,请自己健康上报!')
        exit()  # 结束
whTime = 0
dm.moveto(ret_jiankang_pos[1], ret_jiankang_pos[2])  # 移动鼠标到这个点
dm.leftclick()  # 左键单击

# 这里因为下面这个图加载出来了但是点击还是进不去,所以需要等待加载页面完成在找图点击,
time.sleep(3)

# 点击进入健康上报
ret_shangbaoin = dm.findpice(0, 0, 1920, 1080, "shangbaoin.bmp", '050505', 0.9, 0)  # 找图
ret_shangbaoin_pos = ret_shangbaoin.split("|")
while int(ret_shangbaoin_pos[1]) <= 0:
    ret_shangbaoin = dm.findpice(0, 0, 1920, 1080, "shangbaoin.bmp", '050505', 0.9, 0)  # 找图
    ret_shangbaoin_pos = ret_shangbaoin.split("|")
    whTime += 1
    if whTime >= 500:
        sentEmail('点击进入健康上报填写界面失败,请自己健康上报!')
        exit()  # 结束
whTime = 0
dm.moveto(ret_shangbaoin_pos[1], ret_shangbaoin_pos[2])  # 移动鼠标到这个点
dm.leftclick()  # 左键单击

此贴仅为技术交流探讨,剩下点击健康上报代码不写出,请自行根据前两章内容自行补充!

自定义电脑定时执行Python脚本

image.png

右键此电脑,点击管理

image.png

点击创建基本任务

image.png

自定义任务名称,点击下一步

image.png

image.png

因为上报是每天都需要的,所以选择每天

image.png

选择启动程序

image.png

第一个框是你要运行的启动器,一般为python目录下的python.exe来启动python程序
python.exe
第二个框是你要运行的python文件路径
D:\GameDMTest\企业微信.py
第三个框是你安装python的路径
D:\Python3.9\Python3.9-32

这里的意思就是,在第三个框的路径下找到第一个框的python.exe来运行第二个框的企业微信.py文件