【编程实践】每日JK打卡程序操作说明
0 聲明(本著學習的態度進行了以下開發)
“關于自動健康打卡運行程序,放在下面了,里面涉及到技術內容很少,其中就是包含一個自動化程序的調用和HTML中element的定位。聲明:本程序和經驗僅供技術交流使用,任何人不得將其用于非法用途;同時,軟件屬于測試版本,自己還需多多留意,除技術問題,本人不對其他問題進行解釋和負責。”——一份來自開發程序猿的聲明
// An highlighted block # -*- coding: utf-8 -*- """ Created on Sun Jan 10 19:12:33 2021 @author: zhiyang """ # ============================================================================= # 運行前準備 # 1.準備一個瀏覽器,Chrome,或者FireFox,本程序以Chrome為例 # 2.在網上下載相應版本的瀏覽器驅動Chromedriver,并放在Chrome相同的文件夾下 # 3.將Chromedriver的路徑添加至計算機用戶變量Path中 # 4.python中需要導入指定庫selenium(自動化測試框架)、json(采用config.json配置文件導入用戶信息時用到)、time(計時器 # 5.在用戶數據處填寫自己的信息 # =============================================================================from selenium import webdriver import time import json import yagmail#1 健康上報用戶數據 #1.1 本人學號 #1.2 健康系統密碼 #1.3 健康上報網址 uid='**********' upw='*******' url='https://jksb.v.zzu.edu.cn/vls6sss/zzujksb.dll/first0?fun2=a'#2 開啟瀏覽器 def openChrome():#可以設置無頭瀏覽器,不彈出瀏覽器,后臺運行option=webdriver.ChromeOptions()option.add_argument('disable-infobars')option.add_argument("--headerless")driver=webdriver.Chrome(options=option)return driverdef operate_jksb(driver):driver.get(url)time.sleep(1)#加載網址之后,等待1selem_user=driver.find_element_by_name('uid')elem_user.send_keys(uid)#傳入賬號elem_password=driver.find_element_by_name('upw')elem_password.send_keys(upw)#傳入密碼#自動登錄進入系統login=driver.find_element_by_name('smbtn')login.click()#page1頁面信息提交driver.switch_to_frame('zzj_top_6s')#切換瀏覽器的作用域page1_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[13]/div[5]/div[4]')page1_button.click()time.sleep(1)driver.switch_to_default_content()#切換回默認作用域#page2頁面信息提交-點擊提交表格driver.switch_to_frame('zzj_top_6s')#切換瀏覽器的作用域#page2_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[11]/div[4]')版本一的提交按鈕位置page2_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[7]/div[2]/div[2]/div[6]/div[4]')page2_button.click()driver.switch_to_default_content()#切換回默認作用域#page3確認上報彈窗driver.switch_to_frame('zzj_top_6s')#切換瀏覽器的作用域page3_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[2]/div[2]/div[4]/div[2]')page3_button.click()driver.switch_to_default_content()#切換回默認作用域#退出瀏覽器driver.quit()print("自動填報完成!")#3 打卡通知的Email用戶 SB="********@**.com" def EmailToSB(sb):# 1、準備用于發送郵件的郵箱,此處password是郵箱的授權碼username = "********163.com"password = "***********"# 2、創建SMTP對象yag = yagmail.SMTP(user=username, password=password, host="smtp.163.com")# 3、準備要發送的內容content = ["已完成健康上報!"]# 4、發送郵件yag.send(to=sb, subject="測試郵件", contents=content)# 5、關閉連接yag.close()#4 主函數 if __name__ == '__main__':driver=openChrome()operate_jksb(driver)EmailToSB(SB)1 首先安裝Chrome瀏覽器
1.1 方法一(自己動手豐衣足食)
利用任意一款瀏覽器(360、Microsoft Edge、FireFox)自行從網上下載進行安裝,建議使用goole搜索提供的(需要科學上網),國內一些網站也有提供,但是注意甄別一些假冒的軟件。
1.2 方法二(不勞而獲簡單便捷)
文件夾中我已經給出Chrome的安裝程序,雙擊點擊安裝(谷歌提供的在線安裝服務)
因為程序里面自動化測試框架選用的是Chrome,如果你有需求可以看對應源碼更改響應瀏覽器,如FireFox。
2 配置瀏覽器驅動程序及路徑
如果你在上面采用的是方法一,具體如下面步驟1-2。如果采用方法二,直接跳到步驟3。
2.1 步驟1
請通過瀏覽器【幫助】-【關于google Chrome】查看瀏覽器版本,下載相應版本的Chromedriver。
【傳送門1】驅動源地址
【傳送門2】 鏡像地址
2.2 步驟2
根據自己的瀏覽器版本下載對應的驅動,是一個壓縮包,根據上面chrome 87.0.4280.141,應采用87.0.4280.88,有其他版本的下載相應的chromedriver即可。
將下載的壓縮包解壓,得到一個chromedriver文件。
2.3 步驟3
(1)然后右鍵單擊桌面的谷歌瀏覽器圖標,選在【打開文件所在的位置】,將剛才chromedriver文件復制進來。
(2)復制該文件路徑,如下圖;
(3)將路徑添加至計算機用戶變量path中,如下圖;
操作:打開【我的電腦】-【計算機】-【屬性】
出現“系統”對話框,點擊【高級系統設置】-【環境變量】-‘用戶變量’【編輯】
將剛才復制的路徑粘貼到最后,注意要與前面一個路徑用英文分號隔開,如下圖:
點擊【確定】-‘環境變量’【確定】,關閉其他對話框,重啟電腦(也可以不用重啟,有時候路徑加載不被認可)。
3 構建自己的提醒郵箱
用記事本打開“健康打卡.cfg”文件,根據提示填寫自己登錄信息。
提醒郵箱的設置,以163為例,qq郵箱同理:
登錄163郵箱,點擊【設置】-【POP3/SMTP/IMAP】
點擊開啟之后得到授權碼,妥善保存,如下圖所示:
復制此授權碼,填寫至指定位置:
待發送的郵箱地址,就是誰可以接到你的打卡成功通知:
(1)你可以寫與上面相同的郵箱,手機上使用郵箱app登錄相同的郵箱來接收通知是否打卡成功;
(2)你可以寫自己的qq郵箱,利用手機qq可以來接收通知是否打卡成功;
(3)你可以寫你對象的郵箱,每天向Ta報備你的健康(本single dog覺得此功能多余);
(4)你可以寫你老師的郵箱,每天一封向他匯報健康打卡情況(此建議純屬開玩笑,如有人當真,后果自負!)。
檢查自己的賬戶信息和郵箱信息,保存.cfg文件。(注:要保證.cfg和.exe文件在同一個文件夾下)
此時,運行準備已經完成,可以雙擊.exe文件執行打卡操作。
4 啟用Windows定時任務,實現自動打卡
點擊windows搜索(電腦左下角的放大鏡)“計算機管理”,在任務計劃程序庫中可查看正在準備的程序。
點擊【創建基本任務】,填寫名稱(必填)和描述(非必填),點擊【下一步】
任務觸發器,選擇【每天】,點擊【下一步】
開始時間,根據自己習慣進行設定,應確保在電腦開啟的時間段內,點擊【下一步】
選擇【啟動程序】,點擊【下一步】
點擊【瀏覽】,選擇EXE文件;隨后,將程序路徑去掉“\程序名.exe”復制粘貼放到起始于中,<以下圖為例子,【起始于】中應填寫<“C:\Users\57102\Desktop\健康打卡_v1\健康打卡_v1”>
點擊【下一步】
點擊【完成】,創建任務完成。
在【任務計劃程序庫】中查看自己的任務是否準備就緒。
關閉【計算機管理】。
到此,完成全部操作,可以讓電腦代替自己定時進行上報打卡了~
如有更好的建議,或者在測試過程中遇到問題的,請及時與我聯系,QQ:571023600。
問題反饋日志:
2021年1月13日
問題描述:有同學將自動打卡程序定時啟動時間設置為每天的0:02,但是出現了打卡異常情況;
問題原因:可能是打卡系統的服務器時間與我們本地計算機時間存在差異,系統服務器時間比本地計算機時間提前兩分鐘,如果設置0:02的話,很容易與系統更新時間發生沖突,導致打卡失敗;
解決方法:避免兩分鐘的時間差,將自動啟動時間更改到每天0:02分之后,即可避免出錯。
總結
以上是生活随笔為你收集整理的【编程实践】每日JK打卡程序操作说明的全部內容,希望文章能夠幫你解決所遇到的問題。