基于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之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python网络爬虫实例讲解
Apr 28 Python
使用Python实现在Windows下安装Django
Oct 17 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
python多进程读图提取特征存npy
May 21 Python
简单了解Django应用app及分布式路由
Jul 24 Python
Python threading的使用方法解析
Aug 28 Python
python代码如何实现余弦相似性计算
Feb 09 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python包管理工具pip的15 个使用小技巧
May 17 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
咖啡的种类和口感
2021/03/03 新手入门
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
利用PHP实现短域名互转
2013/07/05 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
开启PHP的伪静态模式
2015/12/31 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
srcElement表格样式
2006/09/03 Javascript
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
linux面试题参考答案(5)
2014/09/01 面试题
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
学校节能减排方案
2014/06/13 职场文书
商场父亲节活动方案
2014/08/27 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
5.12护士节活动总结
2015/02/10 职场文书
同事欢送会致辞
2015/07/31 职场文书