python 打卡程序_如何用python实现腾讯文档自动打卡并定时执行
最近學(xué)了些Web,了解了一些selenum包內(nèi)函數(shù)使用,就寫了下自動健康打卡,并用windows任務(wù)計劃程序定時執(zhí)行,健康打卡這個針對特定網(wǎng)站,所以對于通用化使用倒沒有太大用處,但關(guān)于騰訊文檔如何填寫,因為定位不了表格就沒得想法。。然后和同伴討論了下,一開始采用的是先填寫,再查找并替換,即先填寫一些無關(guān)信息,比如名字簡寫,然后再通過點擊編輯欄中的查找功能,在上面輸入欄進行字符增減操作。
# 1.0版本,通過先填寫內(nèi)容,再替換實現(xiàn)
driver.find_element_by_xpath('//*[@id="editmenu"]/div/div/div[1]').click()
ActionChains(driver).key_down(Keys.CONTROL).key_down('f').perform() # 打開查找功能
time.sleep(3)
try:
driver.find_element_by_id('search-panel-input').send_keys("xxx") # 這里很魔性,一直沒找出原因,同伴告訴我才知道如何修改
driver.find_element_by_id('search-panel-input').send_keys("xxx")# xxx是自己隨便寫的標(biāo)識符
time.sleep(3)
driver.find_element_by_id('alloy-simple-text-editor').click()
for i in range(1,4): # 刪去標(biāo)識符
driver.find_element_by_id('alloy-simple-text-editor').send_keys(Keys.BACK_SPACE)
elmet = driver.find_element_by_id('alloy-simple-text-editor')
elmet.send_keys('ok') # 輸入ok
time.sleep(1)
elmet.send_keys(Keys.ENTER)
print("已完成打卡!!!")
except:
print("出現(xiàn)某些異常!")
上面這個可以針對大多數(shù)填寫情況,但這種過于繁瑣。
一開始也注意到了域名的特殊性,即如下所示,打開騰訊文檔,我們會發(fā)現(xiàn),每次點擊一個表格,域名后面的&c=xx 會更改,但不知道如何利用。
后面經(jīng)同伴提醒后面的A0A0代表頁數(shù)就恍然大悟,其實原先的思路繞了一個大圈去定位表格,沒想到表格信息就已經(jīng)存在訪問的域名中,然后就想直接通過datetime獲取當(dāng)前day,然后根據(jù)騰訊文檔表格中的日期獲取列號,這里注意下,程序中對應(yīng)的是如下圖所示的表格,因為這里A對應(yīng)的是空,所以得+1。
代碼如下所示
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 5 11:14:09 2020
@author: 蟲二
"""
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
import time
import datetime
# 填寫騰訊文檔
def visit_txt():
data = datetime.date.today()# 獲取當(dāng)前時間
now = data.day
# 獲取行列式得根據(jù)實際需求修改
start = 2 # 根據(jù)第一列時間,需要修改
c = chr(now-start+1+65) # 獲取列號, 65即是'A'
h = 8# 行號,即你要填寫對應(yīng)的行號
print(c)
url = "http:... c=" + c + str(h) +"A0A0" # 需要修改
driver = webdriver.Chrome("chromedriver.exe")
driver.get(url)
driver.implicitly_wait(10)
elmet = driver.find_element_by_class_name("unlogin-container")
elmet.click()
driver.implicitly_wait(10)
# 得提前登錄qq,因為這里用了快捷登錄接口
driver.switch_to.frame("login_frame")
elmet = driver.find_element_by_id("img_out_qq號")# 需要修改
elmet.click()
# 轉(zhuǎn)換frame
driver.switch_to.parent_frame()
time.sleep(5)
try:
elmet = driver.find_element_by_id('alloy-simple-text-editor')
elmet.click()
elmet.send_keys('xxx') # 輸入xxx,即你想輸入的字符
time.sleep(1)
elmet.send_keys(Keys.ENTER)
time.sleep(3)
print("今天已成功打卡!!!")
except:
print("出現(xiàn)某些異常,請檢查!!!")
if __name__ == "__main__" :
visit_txt()
任務(wù)計劃程序
Window有個任務(wù)計劃程序功能,還是很有用的,可以定時執(zhí)行程序。
打開后點擊創(chuàng)建,然后繼續(xù)下一步設(shè)置名稱,觸發(fā)器…
需要注意的是下面這部分,第一個程序和腳本就找到你配置好環(huán)境中的python.exe,比如D:\Anaconda3\python.exe,參數(shù)就填寫你要運行的程序,起始地址可以填寫python.exe父目錄,比如D:\Anaconda3
題外話
這次有同伴的幫助,爬出了不少坑,這過程中也學(xué)到了挺多東西,也發(fā)現(xiàn)了解的確實很少,還得繼續(xù)去了解相關(guān)內(nèi)容.
另:運行程序需配置python環(huán)境,安裝selenium等相關(guān)包,并安裝chrome.exe,這個配置過程可能會有點麻煩,但還是挺有意思的,建議用anaconda3環(huán)境,比較容易上手和管理庫,安裝教程其他博客都寫的很詳細。
關(guān)于anaconda3遇到了一個坑,就是Anaconda3環(huán)境中有兩個python.exe腳本,需要注意的是它們的目錄不同,例如在D:\Anaconda3目錄下的是用conda管理庫的,就是平時用conda install xxx,下載的所在的環(huán)境。
但在D:\Anaconda3\envs\temp.py\python.exe,則是基于pip管理庫的,這個是基本的python,所以很多庫都沒有。
所以在配置Pycharm和VScode時需要注意這個腳本路徑。
總結(jié)
以上是生活随笔為你收集整理的python 打卡程序_如何用python实现腾讯文档自动打卡并定时执行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信对账单 java_微信支付对账,你是
- 下一篇: 美国计算机科学联赛获奖,【竞赛获奖】西安