基于python+selenium自动健康打卡的实现代码


Posted in Python onJanuary 13, 2021

每天都要记得健康打卡

尊敬的老师,我忘了这次的健康打卡,反思的时候我想了很多东西,反省了很多事情,自己也很懊悔,触犯了学校的规定,深刻认识到自己所犯错误的严重性… 卡!那是小学生才有的检讨。作为一个有点懒的人,对于每次的健康打卡,都是做着重复性的填写,这让本人很是头疼,那就找找止疼药吧

使用的工具

需要有一定的python,html基础,和实践能力(毕竟实践出真知,实践能力强,你可以忽略前两个,你是最棒的!):

  • Pycharm ,在pycharm官网里面下载社区版或专业版(没其他的用途推荐用社区版);
  • Python 我使用的是python3.8,在官网下载,可参考python安装,配置好环境变量方便cmd 装包;
  • Selenium在cmd输入 pip install selenium ,分布式自动化测试工具,用于模拟用户在浏览器的行为;
  • Chromedriver 这个是在pycharm里面驱动Chrome浏览器,下载后解压放在Script下面,Chromedriver需要和自己的谷歌浏览器版本相对应

基于python+selenium自动健康打卡的实现代码

置于桌面 将你写好的py文件放在桌面或者你设置开机自启动管理运行该程序就可以了

基于python+selenium自动健康打卡的实现代码 

接下来就是代码了

代码中必要的地方都进行了注释,注释的多的地方就是我停留较久的地方,,,实习自动打卡的功能算是实现了,但还是有一些问题,比如说网络延时,当网页还未加载出来,你就无法定位该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)

小结

上面的代码是根据我所填写的健康表流程写的,或许你并不能直接拿过去用,(这也正是我所期望的,哈哈),但是里面的功能实现比较清楚的,这样你就可以按照你的流程写代码了。Good good study, day day up.

到此这篇关于基于python+selenium自动健康打卡的文章就介绍到这了,更多相关selenium自动健康打卡内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python调用shell的方法
Nov 20 Python
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
机器学习python实战之手写数字识别
Nov 01 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 #Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 #Python
Python 生成短8位唯一id实战教程
Jan 13 #Python
python uuid生成唯一id或str的最简单案例
Jan 13 #Python
全网最全python库selenium自动化使用详细教程
Jan 12 #Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 #Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 #Python
You might like
PHP面向对象精要总结
2014/11/07 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
js中function()使用方法
2013/12/24 Javascript
javascript正则表达式使用replace()替换手机号的方法
2015/01/19 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Python实现k-means算法
2018/02/23 Python
图解Python变量与赋值
2018/04/03 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
技术入股协议书
2016/03/22 职场文书
2019同学聚会主持词
2019/05/06 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript