1. 程式人生 > 實用技巧 >Python實現釘釘/企業微信自動打卡

Python實現釘釘/企業微信自動打卡

每天急匆匆趕地鐵上班的時候總會一不小心就會忘記打卡,尤其是軟體打卡,那有沒有什麼辦法可以解決忘打卡的問題呢?今天給大家推薦一下一款神器,利用Python實現定時自動打卡。

1 前期工具準備

  • 不用說的Python

  • 一部24小時可以放公司的安卓手機或電腦安裝模擬器

  • ADB工具

老規矩,需要打包好的軟體關注小編,QQ群:721195303領取。

2 ADB的安裝配置

去下載ADB安裝包,安裝後在環境變數Path中新增目錄

2 UIautomator2的安裝

# 安裝 uiautomator2(PC端)
pip3install-Uuiautomator2

3 手機連線電腦

3.1 手機

如果使用的是手機,需要手機開啟“開發者選項”模式,然後USB除錯開啟,將USB插入電腦

命令列輸入

adb devices

檢測手機是否連線成功

下面這樣就說明成功了

然後執行

python3 -m uiautomator2 init

將atx-agent安裝到手機

3.2模擬器

如果使用模擬器,在模擬器的設定中將ADB連線開啟,同樣在命令列輸入adb devices檢測是否連線成功,是用模擬器的話定位位置需要更改為公司要求打卡範圍內,後續步驟同上

4 webitor安裝使用

為了抓取控制元件更方便安裝weditor

pip install --pre weditor

命令列輸入

python -m weditor

在彈開的瀏覽器中進行操作

輸入框中填入第三步得到的裝置序列號,然後點選Connect,正常的話會有個綠色的葉子,應用控制元件的資訊就需要在這裡拿到了

5 程式碼開發

  1.  
    import uiautomator2 as u2
     
    import time
     
    from apscheduler.schedulers.blocking import BlockingScheduler
     
     
     
    d = u2.connect_usb('b11b0fbe')
     
    def click_text(self,str,sq=0): #對於無法直接點選的控制元件寫了個函式
    path=d(text=str)[sq] x,y=path.center() d.click(x,y) def click(card_ty): d.app_start("com.alibaba.android.rimet") # 啟動應用 time.sleep(5) d(text="工作臺").click() time.sleep(3) d(text="考勤打卡").click() time.sleep(3) d(scrollable=True).fling.toEnd() click_text(d,card_ty,-1) time.sleep(3) d.screenshot("11.jpg") d.push("11.jpg", "/sdcard/0/11.jpg") d.app_stop("com.alibaba.android.rimet") send_info() def send_info(): #將打卡資訊截圖利用小號傳送給自己大號 d.app_start("com.tencent.mm") # 啟動應用 time.sleep(5) click_text(d,"通訊錄") click_text(d,"打卡") click_text(d,"發訊息") time.sleep(2) d(description="更多功能按鈕,已摺疊").click() time.sleep(2) d.swipe(1000, 1450, 100, 1450) time.sleep(2) click_text(d,"檔案") time.sleep(2) click_text(d,"微信檔案",-1) click_text(d,"手機儲存") click_text(d,"0") d(resourceId="com.tencent.mm:id/cvh").click() d(text="傳送(1/9)").click() d(text="給朋友留言").click() d.send_keys("今日打卡記錄,請注意查收", clear=True) d(text="傳送").click() time.sleep(5) d.app_stop("com.tencent.mm") def job1(): click("上班打卡") def job2(): click("下班打卡") if __name__ == "__main__": sched = BlockingScheduler() #設定定時任務,週一至週五 上午8.50自動打上班卡,下午6.10自動打下班卡 sched.add_job(job1, 'cron', day_of_week='mon-fri', hour='8',minute ='50') sched.add_job(job2, 'cron', day_of_week='mon-fri', hour='18',minute ='10') sched.start()


其中打卡部分以及微信傳送打卡截圖部分的程式碼,需要大家自己根據自己實際的情況做步驟調整。另外不習慣使用apscheduler庫的話用系統自帶的任務計劃程式也是可以的,部分步驟效果如下:

企業微信打卡同理,大家可以自行研究,希望大家只是用於學習,不要挑戰公司規章制度。

在這裡還是要推薦下我自己建的Python學習群:721195303,群裡都是學Python的,如果你想學或者正在學習Python ,歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有Python軟體開發相關的),包括我自己整理的一份2021最新的Python進階資料和零基礎教學,歡迎進階中和對Python感興趣的小夥伴加入!