整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

基于python + selenium自动健康打卡

基于python + selenium自动健康打卡

录:

  1. 使用的工具
  2. 代码
  3. 小结

使用的工具

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

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

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

接下来就是代码了

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

小结

上面的代码是根据我所填写的健康表流程写的,或许你并不能直接拿过去用,但是里面的功能实现比较清楚的,这样你就可以按照你的流程写代码了。

感谢阅读!!!

多说一句,很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

经完成了两项提案,目前正在考虑JavaScript背后的技术

ECMAScript 2019是规划的下一版规范,作为JavaScript的基础,正在向前推进。到目前为止,前两个提案已达到“完成”阶段。

这些提案包括:

  • Symbol.prototype.description,一个访问器属性,其集合访问器未定义。它的get访问器函数表现步聚为:比如定义s为这个值,让sym作为?thisSymbolValue(s),然后返回sym.[[Description]]。这样做的目标是直接暴露symbol的[[Description]]内部插槽以代替只通过Symbol.prototype.toString的方式。
  • 改变为Function.prototype.toString。已经提出了修订,例如不需要为使用ECMAScript代码定义的所有函数保留源文本的实现。

可能会有更多修订。监督规范的ECMA委员会将在会议月考虑更多可能包含在ECMAScript 2019中的变化:

  • Object.fromEntries,提供了一种新的静态方法,用于将键值对列表转换为对象。
  • String.prototype.trimStart和String.prototype.trimEnd。这些修订背后的基本原理是所有主要引擎都实现了相应的trimLeft和trimRigh没有标准规范的t函数。对于具有一致性padStart/padEnd,trimStart,trimEnd,trimLeft,和trimRight被提议作为别名用于网络的兼容性。
  • 更新以JSON.stringify发出格式良好的UTF-16(Unicode转换格式)。目前,可能会为代理代码点发出格式错误的代码单元。

完成的ECMAScript版本通常每年6月发布,例如去年的ECMAScript 2018规范。

家好啊,我是测评君,欢迎来到web测评。

本期给大家带来一套PHP校园疫情防控系统的源码。

运行环境

  • 服务器宝塔面板
  • PHP 7.2
  • Mysql 5.7及以上版本
  • Linux Centos7以上

文字搭建教程

  1. 下载源码,宝塔添加一个站点,创建一个数据库,导入school.sql数据库文件
  2. 压缩上传后台代码到宝塔的网站根目录当中
  3. 修改根目录.env与/config/database.php文件中的数据库信息
  4. 网站运行目录指向public,伪静态设置成以下规则:
location / {
 if (!-e $request_filename){
  rewrite  ^(.*)$  /index.php?s=$1  last;   break;
 }
}
  1. .后台地址:http://域名/user/login
  2. 后台默认账号密码:admin 123456

功能介绍:

这套系统功能包括老师和学生角色权限,大数据图表展示,扫码进出校园,校园行程记录,生成二维码,学生管理,网站管理,学生签到打卡等功能等等。

系统实测截图

获取方式

//ceping.club/761.html