python 簡單的selenium自動打卡程序實踐


坐標某帶專,學校日常要求每天打卡,而且要在8點前打卡,萬一睡過頭的話估計一睜眼就是輔導員在群里咆哮了,所以開始學習selenium打算搞一個一鍵打卡的腳本出來。

先考慮一下需要有什么步驟吧:1. 在特定時間打開並進入健康打卡網頁.2. 定位輸入框位置,並輸入賬號密碼 3. 進入打卡頁面  4. 定位需改變選項框,並將框中內容選為綠碼  5. 提交 6. 設置開關,防止重復打卡,自動關閉計算機等。

 

需要用到這些函數,從selenium模塊中導入

接下來要注意的是,在開始爬網頁之前,要先安裝相應瀏覽器webdriver,

例如我使用的是Edge,在Microsoft Edge WebDriver - Microsoft Edge Developer直接下載安裝,並且記住安裝位置。

接下來打開需要訪問的網頁:

#s = Service(r"【剛剛安裝的webdriver.exe的位置】")
#driver.get('需要訪問的網頁的url')

在這里先試運行一下以上6行吧(以baidu為例):

1 from selenium import webdriver
2 from selenium.webdriver.common.by import By
3 from selenium.webdriver.chrome.service import Service
4 
5 s = Service(r"D:\Application\edgedriver_win32\msedgedriver.exe")
6 driver=webdriver.Edge(service=s)
7 driver.get('https://www.baidu.com/')

運行以上代碼后會自動打開URL為https://www.baidu.com/的網頁,同樣的,也可以這樣打開別的頁面,比如打卡系統......

好了現在已經完成第一步了,接下來需要達成的目的是:將用戶號和密碼輸入到那個框里面,然后點擊【進入健康狀況上報平台】。

F12進入開發者模式,觀察頁面源代碼:

我們爬網頁時需要了解一下html,html是一種用於創建網頁的標准標記語言,web開發常用的前端語言,HTML 教程 | 菜鳥教程 (runoob.com),在瀏覽器的開發者模式中可以直接看到網頁源碼。

定位到用戶號輸入框的name屬性為“uid”,同理密碼輸入框的name=“upw”,【進入】按鈕的name=”submit“。

idinputbox=driver.find_element(By.NAME,"uid") #定位賬號(學號)輸入框
pwinputbox=driver.find_element(By.NAME,"upw") #定位密碼輸入框
LoginButton=driver.find_element(By.NAME,"smbtn") #定位"進入健康狀況上報平台"按鈕

idinputbox.send_keys('【用戶名】') #輸入用戶名
pwinputbox.send_keys('【密碼】') #輸入密碼
LoginButton.click() #點擊按鈕,進入下一界面

現在已經登入打卡系統了,接下來的操作跟上邊差不多。

 定位“本人填報”按鈕的位置,並點擊:

reportbutton=driver.find_element(By.XPATH,'//*[@id="bak_0"]/div[11]/div[3]/div[4]')  #這里是通過Xpath定位的,在源代碼中點擊要定位的元素右鍵可以直接復制該元素的Xpath
reportbutton.click()  #點擊按鈕

接下來按照預想應該是進入下一界面了,但是這里會報錯,

 

說定位不到,這是因為“本人填報”元素實際上是處在一個嵌套的表單中,需要先找到該元素所在的frame表單,定位這個表單,跳轉到這個表單,上面兩行代碼可以修改如下:

xf=driver.find_element(By.ID, "zzj_top_6s")
driver.switch_to.frame(xf)

reportbutton=driver.find_element(By.XPATH,'//*[@id="bak_0"]/div[11]/div[3]/div[4]')  #這里是通過Xpath定位的,在源代碼中點擊要定位的元素右鍵可以直接復制該元素的Xpath
reportbutton.click()  #點擊按鈕

driver.switch_to.default_content()#切換回主文檔

在解決frame表單嵌套導致定位失敗的問題時參考了這篇文章:https://www.jianshu.com/p/83087c24ab19

然后就進入最后一個頁面了。

定位和點擊提交表格,方法和上一步驟一樣。

終於可以半夜12點之前睡覺了。

但是僅此而止的話意味着如果想要這個程序發揮作用,我還得在12點后打開電腦然后......再讓它自己打卡。突然想起來一個笑話,一人賣跳蚤葯,招牌上寫出“賣上好蚤葯”。問:“何以用法?”答曰:“捉住跳蚤,以葯塗其嘴,即死矣。”

最后一步,把程序加到任務計划庫里(參考Windows定時運行python程序_鎮上村樹的博客-CSDN博客_定時運行py

設置觸發時間為12點15分,並且在代碼的末尾加上關機函數,電腦保持待機,打完卡直接關機

os.system('shutdown /s /t 0') #關機

 啊,終於可以睡覺了。

感覺這操作好傻啊,不過以后可以試試干點別的...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM