python 打卡程序_如何用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 会更改,但不知道如何利用。

bcb2553fc66446208fb066b81ec27b4d.png

后面经同伴提醒后面的A0A0代表页数就恍然大悟,其实原先的思路绕了一个大圈去定位表格,没想到表格信息就已经存在访问的域名中,然后就想直接通过datetime获取当前day,然后根据腾讯文档表格中的日期获取列号,这里注意下,程序中对应的是如下图所示的表格,因为这里A对应的是空,所以得+1。

157c47e87af34e9b9938b97e4cc27e7e.png

代码如下所示

# -*- 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有个任务计划程序功能,还是很有用的,可以定时执行程序。

打开后点击创建,然后继续下一步设置名称,触发器…

e0fbf82255ba4daaadf68ef58a20944f.jpg

需要注意的是下面这部分,第一个程序和脚本就找到你配置好环境中的python.exe,比如D:\Anaconda3\python.exe,参数就填写你要运行的程序,起始地址可以填写python.exe父目录,比如D:\Anaconda3

f1cc3235ba684c979aca4fc7f7ee78d6.jpg

题外话

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

另:运行程序需配置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时需要注意这个脚本路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot test_精益求精!Spring Boot 知识点全面回顾,带你重新细读源码!

作者:cyd_0619原文:https://blog.csdn.net/cyd_0619约定优于配置Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-based applications. Spring Boot is designed to get you up and running as …

事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...

本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇。如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----…

select count(*) from返回的类型_数据分析面试题类型汇总

1 简单查询- 基本的查询语句&#xff1a;select <列名> from 表名 where 条件- where 后的条件需要标量&#xff0c;不可以使用集合&#xff0c;若与关联子查询连用可用&#xff1b;可使用逻辑运算符连接多个条件&#xff1a;between、and、or、in&#xff08;&#xff0…

configurationproperties_【Springboot】注解@ConfigurationProperties让配置整齐而简单

1 简介前面我们用一篇文章《【Spring】只想用一篇文章记录Value的使用&#xff0c;不想再找其它了(附思维导图)》详细讲解了在Spring中如何使用Value来实现我们对配置的需求&#xff0c;它功能强大、使用方便。但它也是有它的局限性的&#xff0c;比如对于邮件服务&#xff0c;…

dmo Java_java DMO及增删改查代码的自动生成

在web开发过程中&#xff0c;尤其是后台管理系统的开发中&#xff0c;少不了增删改成的基础操作&#xff0c;原来我自己的做法是一份一份的拷贝粘贴&#xff0c;然后修改其中的不同&#xff0c;然而这样既枯燥无味又浪费了大量的时间&#xff0c;所以根据自己项目结构的特点写了…

if __name__ == __main___一文带你弄懂python中if __name__ == #39;__main__#39;

我们在python模块那章节的学习&#xff0c;有所接触到if __name__ __main__这个概念。当时我们只是大概描述了一番&#xff0c;不少伙伴还是有所困惑&#xff0c;今天就让我们通过实际例子去讲解这条语句到底有何含义。一个python文件有两种用途&#xff0c;一种被当主程序、脚…

java 生成apk包_Eclipse导出安卓apk文件的图文教程

安装到Android手机上的apk需要签名&#xff0c;本文描述了如何创建自己的签名及从Eclipse中导出apk。方法/步骤1、在Eclipse中选择一个Android工程&#xff0c;然后点击鼠标右键菜单中的“Export”&#xff1a;2、选择“Android”->;“Export Android Application”&#xf…

营业执照在线生成_平罗县实现个体户营业执照“秒批”

近日平罗县市场监管局注册登记窗口推出个体工商户“秒批”系统。今后&#xff0c;75%个体户常见经营项目可实现5分钟内乃至数秒无人工干预智能审批。01 一是实现智能化审批。平罗县市场监管局登记注册窗口依托自治区系统升级改造&#xff0c;推行企业设立登记标准化和智能化。…

wireshark-win64-3.4.0安装_轴承安装规范

Sulli小苏&#xff1a;今天详细介绍下如何正确的安装轴承&#xff0c;正确的安装操作是轴承长寿命的关键&#xff0c;轮毂轴承的主要作用是承重和为轮毂的转动提供精确引导&#xff0c;它既承受轴向载荷又承受径向载荷&#xff0c;是一个非常重要的零部件。轴承的安装正确方式滚…

代码实现tan graph model for classification_几行代码搞定ML模型,低代码机器学习Python库正式开源...

PyCaret 库支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型&#xff0c;提升机器学习实验的效率。想提高机器学习实验的效率&#xff0c;把更多精力放在解决业务问题而不是写代码上&#xff1f;低代码平台或许是个不错的选择。最近&#xff0c;机器之心发现了…

dataframe 如何选中某列的一行_带你领略pandas中多表之间如何处理

但我们在处理Pandas多表数据时,我们需要将多个表之间进行表格的连接与合并,当连接完多表之后我们可能还需要对数据进行多重的索引,方便我们更快的找到数据,以及对数据进行做透视表,更加直观的去观察我们的数据,今天我们就围绕着数据合并以及数据重塑及透视表进行展开讲解,让我们…

python计算定积分_python编程通过蒙特卡洛法计算定积分详解

这篇文章主要介绍了python编程通过蒙特卡洛法计算定积分详解&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。 想当初&#xff0c;考研的时候要是知道有这么个好东西&#xff0c;计算定积分。。。开玩笑&#xff0c;那时候计算定积分根本没有这么简单的。但这确…

java spring mvc api_SpringMVC实现REST API

JSON使用Jackson jar包、RequestBody、ResponseBody注解&#xff0c;达到&#xff1a;1. 请求JSON消息体映射为JAVA对象2. 返回JAVA对象映射为JSON消息体Step 1. 导入Jackson jar包&#xff1a;Step 2. 在Spring MVC配置中加入annotation-driven&#xff0c;该配置可以确保Requ…

gateway动态路由_无语!SpringCloud Gateway动态路由之Nacos,我已经讲得很清楚了

前言当我们的网关Gateway程序开发完成之后&#xff0c;需要部署到生产环境&#xff0c;这个时候你的程序不能是单点运行的&#xff0c;肯定是多节点启动(独立部署或者docker等容器部署)&#xff0c;防止单节点故障导致整个服务不能访问&#xff0c;网关是对客户端的入口与出口&…

json里面的list数据取不出来_sql盲注的困局:利用DNSlog快速导出数据

对于一个sql注入点来说最幸运的就是支持堆叠注入&#xff0c;最蛋疼的就是盲注&#xff0c;盲注里面难搞的就是基于时间的盲注。我们在本地利用这段代码进行演示<?php error_reporting(0); $link mysqli_connect(localhost,root,root); mysqli_set_charset($link,utf8); m…

python怎么测试程序_python如何测试程序

测试函数是用于自动化测试&#xff0c;使用python模块中的unittest中的工具来测试 附上书中摘抄来的代码&#xff1a;#codingutf-8 import unittest from name_function import get_formatted_name class NamesTestCase(unittest.TestCase): def test_first_last_name(self): f…

判定覆盖白盒测试java_白盒测试系列(四)条件判定覆盖

条件判定覆盖一、定义&#xff1a;程序中每个判定至少有一次为真值&#xff0c;有一次为假值,使得程序中每个分支至少执行一次&#xff0c;且使得各判定中的每个条件获得各种可能的取值至少满足一次。二、特点&#xff1a;1、综合了条件覆盖和判定覆盖的特点2、满足条件判定覆盖…

discard python_Netty入门教程(一) 实现DISCARD服务

官方那个给出的介绍是&#xff1a;Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。然后我们简单理解一下&#xff0c;这玩意就是个程序&#xff0c;干什么的&am…

python向量化编程技巧_神经网络基础之Python与向量化

Vectorization 深度学习算法中&#xff0c;数据量很大&#xff0c;在程序中尽量减少使用loop循环语句&#xff0c;而可以使用向量运算来提高程序运行速度。 向量化(Vectorization)就是利用矩阵运算的思想&#xff0c;大大提高运算速度。例如下面所示在Python中使用向量化要比使…

SQL server 数据库面试题及答案(实操2)

使用你的名字创建一个数据库 创建表&#xff1a; 数据库中有三张表&#xff0c;分别为student,course,SC&#xff08;即学生表&#xff0c;课程表&#xff0c;选课表&#xff09; 问题&#xff1a; --1.分别查询学生表和学生修课表中的全部数据。--2.查询成绩在70到80分之间…