如何用python实现腾讯文档自动打卡并定时执行

最近学了些Web,了解了一些selenum包内函数使用,就写了下自动健康打卡,并用windows任务计划程序定时执行,健康打卡这个针对特定网站,所以对于通用化使用倒没有太大用处,但关于腾讯文档如何填写,因为定位不了表格就没得想法。。然后和同伴讨论了下,一开始采用的是先填写,再查找并替换,即先填写一些无关信息,比如名字简写,然后再通过点击编辑栏中的查找功能,在上面输入栏进行字符增减操作。

#    1.0版本,通过先填写内容,再替换实现
    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是自己随便写的标识符
        time.sleep(3)
        driver.find_element_by_id('alloy-simple-text-editor').click()
        for i in range(1,4):    # 删去标识符
            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("出现某些异常!")

上面这个可以针对大多数填写情况,但这种过于繁琐。
一开始也注意到了域名的特殊性,即如下所示,打开腾讯文档,我们会发现,每次点击一个表格,域名后面的&c=xx 会更改,但不知道如何利用。
在这里插入图片描述
后面经同伴提醒后面的A0A0代表页数就恍然大悟,其实原先的思路绕了一个大圈去定位表格,没想到表格信息就已经存在访问的域名中,然后就想直接通过datetime获取当前day,然后根据腾讯文档表格中的日期获取列号,这里注意下,程序中对应的是如下图所示的表格,因为这里A对应的是空,所以得+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()	# 获取当前时间
    now = data.day
    # 获取行列式得根据实际需求修改
    start = 2   # 根据第一列时间,需要修改
    c = chr(now-start+1+65) # 获取列号, 65即是'A'
    h = 8	# 行号,即你要填写对应的行号
    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()
    # 转换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("出现某些异常,请检查!!!")

if __name__ == "__main__" :
     visit_txt()

任务计划程序

Window有个任务计划程序功能,还是很有用的,可以定时执行程序。
打开后点击创建,然后继续下一步设置名称,触发器…
在这里插入图片描述
需要注意的是下面这部分,第一个程序和脚本就找到你配置好环境中的python.exe,比如D:\Anaconda3\python.exe,参数就填写你要运行的程序,起始地址可以填写python.exe父目录,比如D:\Anaconda3
在这里插入图片描述

题外话

这次有同伴的帮助,爬出了不少坑,这过程中也学到了挺多东西,也发现了解的确实很少,还得继续去了解相关内容.

另:运行程序需配置python环境,安装selenium等相关包,并安装chrome.exe,这个配置过程可能会有点麻烦,但还是挺有意思的,建议用anaconda3环境,比较容易上手和管理库,安装教程其他博客都写的很详细。
关于anaconda3遇到了一个坑,就是Anaconda3环境中有两个python.exe脚本,需要注意的是它们的目录不同,例如在D:\Anaconda3目录下的是用conda管理库的,就是平时用conda install xxx,下载的所在的环境。
但在D:\Anaconda3\envs\temp.py\python.exe,则是基于pip管理库的,这个是基本的python,所以很多库都没有。
所以在配置Pycharm和VScode时需要注意这个脚本路径。

发布了24 篇原创文章 · 获赞 39 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Geek_/article/details/105359177