前言:
簽到,都是規律性的操作,何嘗不寫一個程式加到Windows實現自動簽到呢,本文就主要介紹瞭如何利用Python實現自動打卡簽到的實踐,具有一定的參考價值,感興趣的小夥伴可以瞭解一下。
需求描述
我們需要登入考勤系統(網頁端,非手機端)進行簽到,如果不想每天都早早起來打卡簽到,就可以透過寫程式實現這一功能。
業務梳理
透過長時間的早起打卡簽到發現規律,我每天只是不停地點選,簽到,都是規律性的操作,何嘗不寫一個程式加到Windows實現自動簽到呢,這樣我就不用每天都花時間上在打卡這件小事上。說幹就幹,我發現我每天的打卡行為可以歸納為"登入系統--》輸入使用者名稱、密碼--》點選點選--》退出系統"。
一天上網瀏覽社群,突然看到selenium的描述,然後查閱相關資料發現,
selenium這東西相當好用。一句話概括就是selenium會幫我們自動輸入使用者名稱密碼點選什麼的,剛好和我的需求不謀而合。
至於這selenium這東西怎麼安裝,我就不重複造輪子了。我安裝的webdriver是火狐,因為這考勤系統很奇葩,只允許火狐登入。至於程式的思路,我是這樣設計的,把使用者名稱密碼放在json檔案中,然後Python去讀取,selenium幫我實現登入,簽到,退出系統等,簽到完成之後還會給我發一封郵件。所以,從這篇文章你還可以學習到Python如何讀取json檔案,Python如何利用郵箱發郵件等知識,真是一舉多得。
程式實現
需要匯入的包,from selenium import webdriver表示從selenium匯入webdriver
隨機停留時間,表示隨機延時6秒到10秒之間的時間
開啟登入的考勤系統,webdriver.Firefox()表示開啟一個火狐視窗
清空使用者名稱框和密碼框,同時從設定好的json獲取使用者名稱密碼,登入,clear方法是清除當前視窗已有的輸入資料
然後需要透過find_element_by_css_selector、find_element_by_xpath、find_element_by_id等方法去點選相對應的按鈕,一般的情況下透過css或者id或者name一般都能找的到按鈕的值,如果實在不行,可以透過火狐上的拓展程式找到按鈕的xpath,如果其它的屬性都不好確定,就用find_element_by_xpath,這個基本上是萬能的。
設定需要簽到的人員的賬戶密碼資訊,一開始是我直接指定在字串陣列中,後來為了該軟體可以廣泛使用,加入json配置檔案
從json的配置檔案中獲得使用者資訊、密碼,這裡可以看到Python是怎麼讀取json檔案的
userinfo.json使用者名稱密碼資訊如下圖,儲存在當前目錄下就可以
傳送郵件通知
main方法執行排程
執行的時候可以手工執行,python qiandao-4-0.py
也可以加入到Windows的定時任務當中
程式或指令碼填,指定下Python的安裝路徑
D:\WinPython-64bit-3.4.4.4Qt5\python-3.4.4.amd64\python.exe
新增引數,表示簽到指令碼所在的路徑
E:\1.4-Python原始碼資料\自動簽到指令碼-python-(4.0版本)-2\qiandao-4-0.py
起始於,是表示定時任務啟動的時候是在哪一個目錄下進行操作的,因為我的json配置檔案也在E:\1.4-Python原始碼資料\自動簽到指令碼-python-(4.0版本)-2,因此我也填
E:\1.4-Python原始碼資料\自動簽到指令碼-python-(4.0版本)-2
總結
本篇文章實現瞭如何利用python+ selenium實現在網頁自動簽到,並且新增到Windows的定時任務中是應該如何操作。除了打卡,你也可以用這個程式來乾點別的,舉一反三嘛,從此再也不用點點點了。