首页 > 其他分享 >自动填写体温脚本详解

自动填写体温脚本详解

时间:2022-09-02 00:11:13浏览次数:59  
标签:xpath driver find click 体温 详解 使用 填写 div

最近疫情又严重了起来,学校要求每天都要上报我们的早、中、晚体温情况,但是我们居然被要求中午就提供全天的体温,这很明显是一个纯纯欺上瞒下的工程。

为了不每天浪费时间来扫码、填密码、按几个按键、再点提交(虽然不到一分钟的时间,但是有这么个东西真的很烦人!)我希望能用Python脚本能帮我自动完成这些琐事。

我们最好使用selenium中的webdriver,这个库中的函数可以模拟操作浏览器,非常方便。

 1 from selenium import webdriver 

然后我们使用如下方法进入你填报体温的网址

1 url='你的链接'
2 driver = webdriver.Edge()
3 driver.get(url)

 

首先我们找到自己的“填写的入口”,对我来说就是扫码的结果。

 

图1.填写信息的“入口”

 

 利用右键点击按钮,可以呼出一个窗口,下方点击检查可以查到对应的前端代码

 

 

 在控制台上会有高亮显示,但是最好不要使用class来对其定位,因为有些button同时使用同一个class,保险起见,最好还是使用xpath来定位

 

复制xpath之后,就可以使用find_element_by_xpath方法定位,并使用send_keys()来输入你需要输入的内容,比如学号或者密码

例如

1 driver.find_element_by_xpath("/html/body/app-root/app-right-root/rg-page-container/div/div[2]/div[2]/div[2]/div[2]/div/div/div[1]/app-login-normal/div/form/div[1]/nz-input-group/input").send_keys("你的学号")

对于一些需要点击的按键,selenium也可以使用click()进行模拟点击,例如

 1 driver.find_element_by_xpath('//*[@id="fieldXQ-0"]').click() 

 到此,整段代码的逻辑很简单,只是需要找到按键对应的xpath或者class,就可以将其定位,使用send_keys或者click可以模拟我们人类的一系列操作比如输入或者点击等,类似上述的代码一行一行的堆砌,就能够完成这项工作,但是在实际操作中,并不是如此顺利。我必须指出如下的问题:

1.代码执行的速度比网页加载的速度快,往往代码在执行,网页没有加载出来,导致程序一头雾水,找不到可工作的按钮路径,导致程序报错

2.在填表的过程中,有是否核酸这一选项,但是这种选项是根据当日情况而定的,不是日复一日的答案。

3.如果编写该网页的程序员,改动了调查内容,这个程序又会崩溃。


对于上面的问题,我做出了一些解决方案:

1.我们可以使用Python内置的time库,使用time.sleep方法将程序“暂停几秒”。

 1 time.sleep(2) 

看似解决了方法,但实际上这样的方法并不高明。如果加载的时间比你的预想要长呢?如果加载的时间更快呢?这不就造成了这行代码有种可有可无的境地?

我的解决方法是,不如编写一个while循环,使这段代码不断执行,直到网页加载出来,才能完成这项工作

2.我了解到,我们学校的核酸是每周二周五做一次核酸,这样就将问题解决的方法暴露出来了,我们可以使用datetime库,获取当前星期几

 1 import datetime

2 day=datetime.date.today().isoweekday() 

然后添加一个判断语句,如果今天是星期二或者星期五,填写是;如果是其他情况,填写否

1 if day == 2 or 5:
2         driver.find_element_by_xpath('//*[@id="fieldDESFHS-0"]').click()
3     else:
4         driver.find_element_by_xpath('//*[@id="fieldDESFHS-1"]').click()

但是最新的情况是,我们现在每天都要做核酸,这样更好,省了几行代码:)

3.第三种情况没什么好说的,请使用try/except语句判断程序是否执行成功,如成功,打印“mission runs smoothly”;如失败,则打印“something wrong”。看到这条消息就乖乖地去修改程序吧:(

在这整个程序编写完之后,使用pystaller将其打包成可执行的exe文件,然后丢到Windows系统的自动执行任务,定点执行。至此,你彻底摆脱了这一麻烦事!

文章结尾,我想说点不足之处,我真希望能挂到什么服务器或者网站上,因为我的电脑总不能一直开着,电脑不开机就不能自动执行,这是我的一大痛点。还有要是能程序报错或者不能执行,能将报错信息或者运行成功与否的提示通过邮件发送到我手机上使我得知,会更好。

标签:xpath,driver,find,click,体温,详解,使用,填写,div
From: https://www.cnblogs.com/hikarinohito/p/16648298.html

相关文章

  • MySQL Explain执行计划key_len详解(特意针对date和datetime详细测试说明)
    MySQLExplain执行计划key_len详解(特意针对date和datetime详细测试说明)我们在使用Explain查看SQL执行计划时,其中有一列为key_kenkey_len表示使用的索引长度,那么key_len......
  • session、cookie、token详解
    授权:给客户端授予权限鉴权:鉴定是否有访问权限1、会话会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户......
  • vue项目中main.js使用方法详解
    vue项目中main.js使用方法详解目录第一部分:main.js文件解析第二部分:Vue.use的作用以及什么时候使用Vue.use是什么?(官方文档)Vue.use()什么时候使用?补充:关于main.js方便小技......
  • 保姆级跑步姿势详解
    https://www.bilibili.com/video/BV1ER4y1J7hp    这个姿势的错误是迈的步子太大,落地点太过靠前会产生刹车效应正确的跑步姿势落地点,要尽可能靠近身体的正下方......
  • @RequestMapping注解详解
    功能RequestMapping注解是一个用来处理请求地址映射的注解,可用于类或方法的上方,用于类的上方可以作为父路径value属性 @RequestMapping(value={"/index","/hello"})p......
  • linux top 学习及详解 top变红
    linuxtop学习及详解top变红-豌豆ip代理 https://www.wandouip.com/t5i258522/众所周知,linux的top命令是服务器工程师和运维最常用的工具之一,类似于windows的任务管......
  • python进阶__struct数据处理详解
    一、此模块可以执行Python值和以Pythonbytes对象表示的C结构之间的转换二、打包解包需要按照特定的方式来打包或者解包.该方式就是格式化字符串,它指定了数据类......
  • 【C标准库】详解fopen函数 一篇让你搞懂fopen函数
    创作不易,感谢支持!fopen函数头文件:stdio.h功能是打开一个文件,其声明格式是:FILE*fopen(constchar*filename,constchar*mode);文件指针名=fopen(文件名,使用文......
  • OSPF动态路由协议详解
    我们知道RIP协议最多只能允许15跳,且完全根据跳数距离来选择最佳路径,不考虑带宽,这是不符合现代网络标准的。所以我们介绍另外一种动态路由路由协议-OSPF。 一、自治系统......
  • go语言函数详解-02
    go语言defer(延迟执行语句)会用延迟执行语句在函数退出时释放资源处理业务或逻辑中涉及成对的操作是一件比较烦琐的事情,比如打开和关闭文件、接收请求和回复请求、加锁和......