整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          基于python + selenium自動健康打卡

          基于python + selenium自動健康打卡

          錄:

          1. 使用的工具
          2. 代碼
          3. 小結

          使用的工具

          需要有一定的python,html基礎,和實踐能力(畢竟實踐出真知,實踐能力強,你可以忽略前兩個,你是最棒的!):

          1. Pycharm ,在pycharm官網里面下載社區版或專業版(沒其他的用途推薦用社區版);
          2. Python 我使用的是python3.8,在官網下載,可參考python安裝,配置好環境變量方便cmd 裝包;
          3. Selenium在cmd輸入 pip install selenium ,分布式自動化測試工具,用于模擬用戶在瀏覽器的行為;
          4. Chromedriver 這個是在pycharm里面驅動Chrome瀏覽器,下載后解壓放在Script下面,Chromedriver需要和自己的谷歌瀏覽器版本相對應

          5.置于桌面 將你寫好的py文件放在桌面或者你設置開機自啟動管理運行該程序就可以了

          接下來就是代碼了

          代碼中必要的地方都進行了注釋,注釋得多的地方就是我停留較久的地方,,,實習自動打卡的功能算是實現了,但還是有一些問題,比如說網絡延時,當網頁還未加載出來,你就無法定位該html元素,該程序就無法正常執行完操作,可以發一封郵件提醒你補填。歡迎大家共同探討遇到的問題或者文章中有其他不足之處還望雅正。

          import time
          from selenium import webdriver
          from selenium.webdriver.common.keys import Keys
          from selenium.webdriver.common.action_chains import ActionChains
          
          # 腳本自動登錄該網頁
          driver=webdriver.Chrome()
          # 將健康表的地址copy過來就行
          driver.get("你的健康表地址")
          time.sleep(2)
          
          print("開始點擊----立即登錄")
          # 第一次點擊登錄跳轉
          driver.find_element_by_xpath('//*[@id="header-login-btn"]').click()
          time.sleep(5)
          
          print("開始點擊快速登錄")
          
          # # selenium判斷元素是否可以點擊或者處理
          # element=driver.find_element_by_id("img_out_191736586")
          
          # element=driver.find_element_by_xpath('//*[@id="img_out_191733686"]')
          # bianji=element.is_enabled()   #是否可以編輯,或者按鈕是否可以點擊
          # xinashi=element.is_displayed()  #:判斷元素是否顯示
          # xunazhong=element.is_selected()  #:判斷元素是否選中狀態
          # print(bianji,xinashi,xunazhong)
          # element.click()
          
          # 想了想為啥定位不到那個快速登錄元素,原來html知識不夠,切進iframe
          driver.switch_to.frame(0)  # 1.用frame的index來定位,第一個是0
          # driver.switch_to.frame("frame1")  # 2.用id來定位
          # driver.switch_to.frame("myframe")  # 3.用name來定位
          # driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))  # 4.用WebElement對象來定位
          
          # 快捷登錄
          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("點擊大數據人工智能一班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("開始點擊更多")
          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("點擊搜索")
          driver.find_elements_by_xpath('//*[@id="sheet-search-button"]/div/div/div')[1].click()
          time.sleep(3)
          
          print("開始點擊搜索框")
          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確定結束
          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)

          小結

          上面的代碼是根據我所填寫的健康表流程寫的,或許你并不能直接拿過去用,但是里面的功能實現比較清楚的,這樣你就可以按照你的流程寫代碼了。

          感謝閱讀!!!

          多說一句,很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。小編是一名python開發工程師,這里有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,并在后臺私信小編:“01”即可領取。

          經完成了兩項提案,目前正在考慮JavaScript背后的技術

          ECMAScript 2019是規劃的下一版規范,作為JavaScript的基礎,正在向前推進。到目前為止,前兩個提案已達到“完成”階段。

          這些提案包括:

          • Symbol.prototype.description,一個訪問器屬性,其集合訪問器未定義。它的get訪問器函數表現步聚為:比如定義s為這個值,讓sym作為?thisSymbolValue(s),然后返回sym.[[Description]]。這樣做的目標是直接暴露symbol的[[Description]]內部插槽以代替只通過Symbol.prototype.toString的方式。
          • 改變為Function.prototype.toString。已經提出了修訂,例如不需要為使用ECMAScript代碼定義的所有函數保留源文本的實現。

          可能會有更多修訂。監督規范的ECMA委員會將在會議月考慮更多可能包含在ECMAScript 2019中的變化:

          • Object.fromEntries,提供了一種新的靜態方法,用于將鍵值對列表轉換為對象。
          • String.prototype.trimStart和String.prototype.trimEnd。這些修訂背后的基本原理是所有主要引擎都實現了相應的trimLeft和trimRigh沒有標準規范的t函數。對于具有一致性padStart/padEnd,trimStart,trimEnd,trimLeft,和trimRight被提議作為別名用于網絡的兼容性。
          • 更新以JSON.stringify發出格式良好的UTF-16(Unicode轉換格式)。目前,可能會為代理代碼點發出格式錯誤的代碼單元。

          完成的ECMAScript版本通常每年6月發布,例如去年的ECMAScript 2018規范。

          家好啊,我是測評君,歡迎來到web測評。

          本期給大家帶來一套PHP校園疫情防控系統的源碼。

          運行環境

          • 服務器寶塔面板
          • PHP 7.2
          • Mysql 5.7及以上版本
          • Linux Centos7以上

          文字搭建教程

          1. 下載源碼,寶塔添加一個站點,創建一個數據庫,導入school.sql數據庫文件
          2. 壓縮上傳后臺代碼到寶塔的網站根目錄當中
          3. 修改根目錄.env與/config/database.php文件中的數據庫信息
          4. 網站運行目錄指向public,偽靜態設置成以下規則:
          location / {
           if (!-e $request_filename){
            rewrite  ^(.*)$  /index.php?s=$1  last;   break;
           }
          }
          1. .后臺地址:http://域名/user/login
          2. 后臺默認賬號密碼:admin 123456

          功能介紹:

          這套系統功能包括老師和學生角色權限,大數據圖表展示,掃碼進出校園,校園行程記錄,生成二維碼,學生管理,網站管理,學生簽到打卡等功能等等。

          系統實測截圖

          獲取方式

          //ceping.club/761.html


          主站蜘蛛池模板: 蜜桃传媒一区二区亚洲AV| 精品无码人妻一区二区三区18| 亚洲av福利无码无一区二区| 激情亚洲一区国产精品| 久久se精品一区精品二区| 色婷婷香蕉在线一区二区| 亚洲福利电影一区二区?| 国产午夜精品免费一区二区三区 | 久久婷婷久久一区二区三区| 无码av不卡一区二区三区| 国产麻豆媒一区一区二区三区 | 精品女同一区二区三区免费播放| 韩国福利一区二区美女视频| 色国产精品一区在线观看| 国偷自产一区二区免费视频| 波多野结衣的AV一区二区三区| 亚洲性日韩精品一区二区三区 | 精品视频一区二区三区在线播放 | 久久精品岛国av一区二区无码| 久久亚洲国产精品一区二区| 男人免费视频一区二区在线观看 | 精品一区二区三区在线视频观看 | 熟女少妇精品一区二区| 日韩一区二区在线观看| 国产在线观看91精品一区| 在线播放精品一区二区啪视频| 加勒比无码一区二区三区| 国产一区二区草草影院| 鲁丝丝国产一区二区| 激情无码亚洲一区二区三区| 在线播放精品一区二区啪视频| 国产一区二区在线| 波多野结衣中文一区二区免费| 蜜桃视频一区二区| 亚洲无线码在线一区观看| 国产精品成人国产乱一区| 中文日韩字幕一区在线观看| 激情爆乳一区二区三区| 国产韩国精品一区二区三区 | 天天看高清无码一区二区三区| 美女AV一区二区三区|