基于python+selenium自動(dòng)健康打卡的實(shí)現(xiàn)代碼
每天都要記得健康打卡
尊敬的老師,我忘了這次的健康打卡,反思的時(shí)候我想了很多東西,反省了很多事情,自己也很懊悔,觸犯了學(xué)校的規(guī)定,深刻認(rèn)識(shí)到自己所犯錯(cuò)誤的嚴(yán)重性… 卡!那是小學(xué)生才有的檢討。作為一個(gè)有點(diǎn)懶的人,對(duì)于每次的健康打卡,都是做著重復(fù)性的填寫,這讓本人很是頭疼,那就找找止疼藥吧
使用的工具
需要有一定的python,html基礎(chǔ),和實(shí)踐能力(畢竟實(shí)踐出真知,實(shí)踐能力強(qiáng),你可以忽略前兩個(gè),你是最棒的!):
- Pycharm ,在pycharm官網(wǎng)里面下載社區(qū)版或?qū)I(yè)版(沒(méi)其他的用途推薦用社區(qū)版);
- Python 我使用的是python3.8,在官網(wǎng)下載,可參考python安裝,配置好環(huán)境變量方便cmd 裝包;
- Selenium在cmd輸入 pip install selenium ,分布式自動(dòng)化測(cè)試工具,用于模擬用戶在瀏覽器的行為;
- Chromedriver 這個(gè)是在pycharm里面驅(qū)動(dòng)Chrome瀏覽器,下載后解壓放在Script下面,Chromedriver需要和自己的谷歌瀏覽器版本相對(duì)應(yīng)
置于桌面 將你寫好的py文件放在桌面或者你設(shè)置開機(jī)自啟動(dòng)管理運(yùn)行該程序就可以了
接下來(lái)就是代碼了
代碼中必要的地方都進(jìn)行了注釋,注釋的多的地方就是我停留較久的地方,,,實(shí)習(xí)自動(dòng)打卡的功能算是實(shí)現(xiàn)了,但還是有一些問(wèn)題,比如說(shuō)網(wǎng)絡(luò)延時(shí),當(dāng)網(wǎng)頁(yè)還未加載出來(lái),你就無(wú)法定位該html元素,該程序就無(wú)法正常執(zhí)行完操作,可以發(fā)一封郵件提醒你補(bǔ)填。歡迎大家共同探討遇到的問(wèn)題或者文章中有其他不足之處還望雅正。
import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains # 腳本自動(dòng)登錄該網(wǎng)頁(yè) driver = webdriver.Chrome() # 將健康表的地址copy過(guò)來(lái)就行 driver.get("你的健康表地址") time.sleep(2) print("開始點(diǎn)擊----立即登錄") # 第一次點(diǎn)擊登錄跳轉(zhuǎn) driver.find_element_by_xpath('//*[@id="header-login-btn"]').click() time.sleep(5) print("開始點(diǎn)擊快速登錄") # # selenium判斷元素是否可以點(diǎn)擊或者處理 # element = driver.find_element_by_id("img_out_191736586") # element = driver.find_element_by_xpath('//*[@id="img_out_191733686"]') # bianji = element.is_enabled() #是否可以編輯,或者按鈕是否可以點(diǎn)擊 # xinashi = element.is_displayed() #:判斷元素是否顯示 # xunazhong = element.is_selected() #:判斷元素是否選中狀態(tài) # print(bianji,xinashi,xunazhong) # element.click() # 想了想為啥定位不到那個(gè)快速登錄元素,原來(lái)html知識(shí)不夠,切進(jìn)iframe driver.switch_to.frame(0) # 1.用frame的index來(lái)定位,第一個(gè)是0 # driver.switch_to.frame("frame1") # 2.用id來(lái)定位 # driver.switch_to.frame("myframe") # 3.用name來(lái)定位 # driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) # 4.用WebElement對(duì)象來(lái)定位 # 快捷登錄 driver.find_element_by_xpath('//*[@id="img_out_1917336586"]').click() # driver.find_elements_by_class_name('img_out_focus')[0].click() time.sleep(15) print("點(diǎn)擊大數(shù)據(jù)人工智能一班SHEET") # driver.find_elements_by_class_name("sheet-tab-name")[2].click() driver.find_element_by_xpath('//*[@id="sheetbar"]/div[2]/div[3]/div/div[4]/span').click() time.sleep(3) print("開始點(diǎn)擊更多") driver.find_element_by_xpath('//*[@id="toobarMoreButton"]/div/div/div[1]').click() # driver.find_element_by_class_name("toolbar-menu-button-more toolbar-inline-block").click() time.sleep(10) print("點(diǎn)擊搜索") driver.find_elements_by_xpath('//*[@id="sheet-search-button"]/div/div/div')[1].click() time.sleep(3) print("開始點(diǎn)擊搜索框") getinput = driver.find_element_by_xpath('//*[@id="search-panel-input"]') getinput.send_keys("北極熊") time.sleep(2) print("已獲取該位置" + getinput.location) time.sleep(2) # Key.tab選擇,Kys.enter確定結(jié)束 driver.find_element_by_id('alloy-simple-text-editor').click() driver.find_element_by_id('alloy-simple-text-editor').send_keys("") ActionChains(driver).key_down(Keys.TAB).perform() ActionChains(driver).key_down(Keys.TAB).perform() driver.find_element_by_id('alloy-simple-text-editor').click() driver.find_element_by_id('alloy-simple-text-editor').send_keys("是") ActionChains(driver).key_down(Keys.TAB).perform() ActionChains(driver).key_down(Keys.TAB).perform() driver.find_element_by_id('alloy-simple-text-editor').click() driver.find_element_by_id('alloy-simple-text-editor').send_keys("是") ActionChains(driver).key_down(Keys.TAB).perform() ActionChains(driver).key_down(Keys.TAB).perform() ActionChains(driver).key_down(Keys.TAB).perform() driver.find_element_by_id('alloy-simple-text-editor').click() driver.find_element_by_id('alloy-simple-text-editor').send_keys("否") ActionChains(driver).key_down(Keys.TAB).perform() ActionChains(driver).key_down(Keys.TAB).perform() driver.find_element_by_id('alloy-simple-text-editor').click() driver.find_element_by_id('alloy-simple-text-editor').send_keys("否") ActionChains(driver).key_down(Keys.TAB).perform() driver.find_element_by_id('alloy-simple-text-editor').click() driver.find_element_by_id('alloy-simple-text-editor').send_keys("填寫你的地址") driver.find_element_by_id('alloy-simple-text-editor').send_keys(Keys.ENTER) time.sleep(1)
小結(jié)
上面的代碼是根據(jù)我所填寫的健康表流程寫的,或許你并不能直接拿過(guò)去用,(這也正是我所期望的,哈哈),但是里面的功能實(shí)現(xiàn)比較清楚的,這樣你就可以按照你的流程寫代碼了。Good good study, day day up.
到此這篇關(guān)于基于python+selenium自動(dòng)健康打卡的文章就介紹到這了,更多相關(guān)selenium自動(dòng)健康打卡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python實(shí)現(xiàn)自動(dòng)打卡小程序
- Python實(shí)現(xiàn)釘釘/企業(yè)微信自動(dòng)打卡的示例代碼
- python實(shí)現(xiàn)自動(dòng)打卡的示例代碼
- python+selenium 簡(jiǎn)易地疫情信息自動(dòng)打卡簽到功能的實(shí)現(xiàn)代碼
- Python + selenium + crontab實(shí)現(xiàn)每日定時(shí)自動(dòng)打卡功能
- Python 實(shí)現(xiàn)網(wǎng)課實(shí)時(shí)監(jiān)控自動(dòng)簽到、打卡功能
- Python實(shí)現(xiàn)i人事自動(dòng)打卡的示例代碼
- python獲取微信企業(yè)號(hào)打卡數(shù)據(jù)并生成windows計(jì)劃任務(wù)
- 使用Python實(shí)現(xiàn)企業(yè)微信的自動(dòng)打卡功能
- Python實(shí)戰(zhàn)之單詞打卡統(tǒng)計(jì)
相關(guān)文章
python pip安裝的包放在哪個(gè)目錄(site-packages目錄的位置)
這篇文章主要介紹了python pip安裝的包放在哪個(gè)目錄(site-packages目錄的位置),通常安裝在python安裝目錄下的lib/site-packages目錄下,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06完美解決Pycharm中matplotlib畫圖中文亂碼問(wèn)題
這篇文章主要介紹了完美解決Pycharm中matplotlib畫圖中文亂碼問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Python?中?threading.Thread.join()?的使用方法示例詳解
threading.Thread.join()用于阻塞當(dāng)前線程,直到調(diào)用它的線程對(duì)象執(zhí)行完成或者超時(shí),在Python中,想要充分利用多線程的優(yōu)勢(shì),就需要對(duì)threading模塊中的 Thread 類了解,這里有一個(gè)非常簡(jiǎn)單的多線程程序,幫助理解 threading.Thread.join 方法,感興趣的朋友跟隨小編一起看看吧2024-06-06Python數(shù)據(jù)結(jié)構(gòu)dict常用操作代碼實(shí)例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)dict常用操作代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03python實(shí)現(xiàn)得到當(dāng)前登錄用戶信息的方法
這篇文章主要介紹了python實(shí)現(xiàn)得到當(dāng)前登錄用戶信息的方法,結(jié)合實(shí)例形式分析了Python在Linux平臺(tái)以及Windows平臺(tái)使用相關(guān)模塊獲取用戶信息的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06Python代碼中引用已經(jīng)寫好的模塊、方法的兩種方式
這篇文章主要介紹了Python代碼中引用已經(jīng)寫好的模塊、方法,下面就介紹兩種方式,可以簡(jiǎn)潔明了地調(diào)用自己在其他模塊寫的代碼,需要的朋友可以參考下2022-07-07numpy如何刪除矩陣中的部分?jǐn)?shù)據(jù)numpy.delete
這篇文章主要介紹了numpy如何刪除矩陣中的部分?jǐn)?shù)據(jù)numpy.delete問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02對(duì)Python中range()函數(shù)和list的比較
下面小編就為大家分享一篇對(duì)Python中range()函數(shù)和list的比較,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04