使用python开发钉钉自动打卡程序(python自动化)

一、前期准备

1、准备一部安卓手机

2、从网上下载adb的安装工具包,也可以到我的网盘下载 提取码:hnph

3、下载后解压到自己的本地目录,然后配置环境变量,如图所示

使用python开发钉钉自动打卡程序(python自动化)_第1张图片

也可以自定义目录,但环境变量一定要配置(包括python)。

4、将自己的手机和电脑连接,打开开发者选项模式,使用usb进行连接,此时会自动安装ADB的驱动程序,安装成功后如下图所示

使用python开发钉钉自动打卡程序(python自动化)_第2张图片

注意:此驱动如果安装失败,就无法进行后面的操作,一定要保证此驱动安装成功

如果一直无法安装此驱动,则可以参照如下步骤

1、首先从android官网网站下载对应的sdk-tool工具包,或者可以到我的网盘下载:密码:0jwd

2、下载完成后解压打开sdk manager

使用python开发钉钉自动打卡程序(python自动化)_第3张图片

3、选择安装google usb driver插件

使用python开发钉钉自动打卡程序(python自动化)_第4张图片

4、插件安装成功后开始安装,到我的电脑-管理-设备管理找到安装失败的adb驱动

使用python开发钉钉自动打卡程序(python自动化)_第5张图片

5、右键点击更新驱动程序,后选择如下图所示

使用python开发钉钉自动打卡程序(python自动化)_第6张图片

6、选择下一步

使用python开发钉钉自动打卡程序(python自动化)_第7张图片

7、直接选择下一步后到如图所示,从本地磁盘找到安装驱动文件,然后点击下一步安装即可

使用python开发钉钉自动打卡程序(python自动化)_第8张图片

8、安装成功如下所示

使用python开发钉钉自动打卡程序(python自动化)_第9张图片

5、上述部署完成后打开cmd进入到驱动包目录下面检测是否成功连接设备

使用python开发钉钉自动打卡程序(python自动化)_第10张图片

如图所示出现设备号则证明手机连接成功,并且驱动也安装无误。

 6、此时就可以输入相关命令进行坐标调试了,可以观察手机的动作,如图,可以为后面python脚本调试参数

二、开发阶段

1、首先准备python环境,具体安装部署就不详述了,这里之说下怎么部署需要的包,此次用到的包如下

使用python开发钉钉自动打卡程序(python自动化)_第11张图片

2、这里着重说下uiautomator2包的导入,一般情况下都很容易安装失败

方式一:进入到本地python环境使用命令进行安装

注意:安装之前保证python环境变量配置和pip升级到最新版本

进入后首先执行python -m pip install --upgrade pip命令更新版本

如果此时更新失败,则可以到我的网盘直接下载安装包 提取码:ee4q

下载完成后进入到安装包解压目录直接执行python setup.py install进行 安装即可

此时pip版本即可更新。

接下来就可以执行pip install --pre -U uiautomator2命令进行安装了

方式二:直接使用国内镜像网站直接更新下载pip install -U --pre uiautomator2 -i https://pypi.doubanio.com/simple

综合上述uiautomator2 的包就安装成功了

3、安装成功后就可以进行初始化了,继续进入到python安装目录,执行python -m uiautomator2 init,此时手机会提示时候安装响应的程序,直接点击允许即可

4、到此就可以放心的开发python代码了,整体代码如下

import os,re
import time
import uiautomator2 as u2


print("--------------------编写函数----------------------")
##根据x和y坐标进行屏幕定位点击事件
def onClick(x,y):
    ##触摸屏幕进行点击
    os.system('adb shell input tap {x1} {y1}'.format(x1=x, y1=y))

##滑动屏幕从(x, y)坐标点到(ex, ey)坐标点
def slide(x,y,ex,ey):
    os.system('adb shell input swipe {x1} {y1} {x2} {y2}'.format(x1=x, y1=y, x2=ex, y2=ey))

##手机屏幕响应操作
def touch(key): #按动相应的按键
    if key == "back":
        print("> 返回按键")
        os.system('adb shell input keyevent 4')
    elif key == "light":
        print("> 开屏按键")
        os.system('adb shell input keyevent 26')
    time.sleep(1) # 等待1s等手机反应

##判断是否黑屏
def is_black():
    d = u2.connect()
    screen = d.info
    if screen["screenOn"] == False:
        return True
        print("熄屏状态...")
print("----------------------------------------------------------")
print("---------------编写主函数,开始调用执行打卡---------------")

def start():
    ##1、点击屏幕钉钉软件,坐标可根据手机自行调节
    onClick(650,850)
    time.sleep(2)
    ##2、点击钉钉里面的工作按钮
    onClick(550,2000)
    time.sleep(2)
    ##3、点击考勤打卡按钮
    onClick(150,1100)
    time.sleep(2)
    ##4、点击上班打卡按钮
    onClick(550,760)
    time.sleep(2)
    ##5、点击下班打卡按钮
    onClick(550,1082)
    ##打卡完毕,关闭屏幕
    time.sleep(2)
    ##打卡完毕,关闭屏幕
    touch("light")

def startMain():
    if is_black():
        touch("light") ##点击亮屏幕
        ##由于我的是密码锁屏,姑且要输入密码
        ##如果将密码锁去掉则可以注释掉一下代码了,只需要亮屏即可
        #onClick(550,458)
        #onClick(650,785)
        #onClick(980,445)
        #onClick(990,998)
        start()
    else:
        start()


startMain()

5、启动运行后结果如下,这里就只展示日志信息了

使用python开发钉钉自动打卡程序(python自动化)_第12张图片

6、将python脚本部署到java的定时系统,就可以每天定时调用打卡了

使用python开发钉钉自动打卡程序(python自动化)_第13张图片 

总结:到此将其部署到定时器中就可以每天定时打卡了。

 

 

 

你可能感兴趣的:(使用python开发钉钉自动打卡程序(python自动化))