JNU之一键打卡

目录一、关于selenium二、安装库函数、浏览器驱动三、分析网页,确定代码四、生成exe文件

一、关于selenium

  正如中文网站提到的:Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。 利用selenium,就可以驱动浏览器,实现一键打卡。

二、安装库函数、浏览器驱动

  参考selenium + python自动化测试环境搭建。由于本人使用的Anaconda的Spyder,在控制台里面通过pip安装比较方便,输入pip install selenium即可;然后,输入import selenium测试,如果没有报错,则安装成功。
  下面,下载浏览器(建议使用Microsoft Edge)驱动。建议直接到官方驱动网站下载,驱动的版本需要根据浏览器版本而定,查看方法如下图,设置—>常规(拉到底部)。
JNU之一键打卡

如果版本在18及以上,则以管理员身份打开命令提示符,输入DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0即可。JNU之一键打卡

三、分析网页,确定代码

  查看打卡的网页源代码,可以发现登录页面的元素可以利用id和type定位,如下图:JNU之一键打卡
因此,可以确定代码为(假如学号为2018123456,密码为123456):

stuId = '2018123456' # 需要填入学号
stuPsw = '123456' # 需要填入密码


# 输入学号、密码
elem = driver.find_element_by_id('zh')
elem.send_keys(stuId)

elem = driver.find_element_by_id('passw')
elem.send_keys(stuPsw)

# 提交表单
driver.find_element_by_xpath('//button[@type="submit"]').click()

登录成功后,需要选择省份、城市、地区。这里通过id定位下拉框,然后根据选项本身选定。
JNU之一键打卡
以重庆市—重庆市市辖区—渝中区为例,在双引号内依次填入选项名,代码如下:

# 选择省份
s1 = Select(driver.find_element_by_id('selectProvince')) # 实例化Select
s1.select_by_visible_text("重庆市") # 双引号内填入省份

# 选择城市
s2 = Select(driver.find_element_by_id('selectCity')) # 实例化Select
s2.select_by_visible_text("重庆市市辖区") # 双引号内填入城市

s3 = Select(driver.find_element_by_id('selectDistrict')) # 实例化Select
s3.select_by_visible_text("渝中区") # 双引号内填入地区
time.sleep(2)

然后点击确认无误,最后提交表单就好,代码如下:

# 勾选“确认无误”
driver.find_element_by_xpath('//input[@id="10000"]').click()

if driver.find_element_by_xpath('//input[@id="10000"]').is_selected:
print('已点击确认无误')
else:
print('未点击确认无误')

# 提交
driver.find_element_by_xpath("//button[@type='submit']").click()
time.sleep(2)

四、生成exe文件

  同样,以Anaconda为例,打开Anaconda Prompt,输入pip install pyinstaller命令,就会自动安装pyinstaller。安装完成后,继续输入pyinstaller -F C:\Users\hello.py-F-w为可选参数,选择-F,生成的执行文件较少,但运行时较慢,不选的话就相反;选择-w,则运行时不会打开cmd。最后,到C:\Users\XXXX\dist(示例路径,就在C盘->用户->自己的用户名->dist)找到exe文件就好,至此,所有工作就完成啦!
  最后,附上完整代码(需要填入自己的学号、密码、需要选择的地方):

# -*- coding: UTF-8 -*-
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.common.exceptions import TimeoutException
import time

stuId = '' # 引号内需要填入学号
stuPsw = '' # 引号内需要填入密码

def ClockIn(driver):
time.sleep(5)
try:
url = r"https://stuhealth.jnu.edu.cn/#/login"
for i in range(len(stuId)):
driver.get(url)
driver.maximize_window()

# 输入学号、密码
elem = driver.find_element_by_id('zh')
elem.send_keys(stuId)

elem = driver.find_element_by_id('passw')
elem.send_keys(stuPsw)

# 提交表单
driver.find_element_by_xpath('//button[@type="submit"]').click()
time.sleep(5)

target = driver.find_element_by_id("selectProvince")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到页面底部

# 选择省份
s1 = Select(driver.find_element_by_id('selectProvince')) # 实例化Select
s1.select_by_visible_text("") # 双引号内填入省份

# 选择城市
s2 = Select(driver.find_element_by_id('selectCity')) # 实例化Select
s2.select_by_visible_text("") # 双引号内填入城市

s3 = Select(driver.find_element_by_id('selectDistrict')) # 实例化Select
s3.select_by_visible_text("") # 双引号内填入地区
time.sleep(2)

# 勾选“确认无误”
driver.find_element_by_xpath('//input[@id="10000"]').click()

if driver.find_element_by_xpath('//input[@id="10000"]').is_selected:
print('已点击确认无误')
else:
print('未点击确认无误')

# 提交
driver.find_element_by_xpath("//button[@type='submit']").click()
time.sleep(2)

driver.close()
print('成功打卡')

except TimeoutException:
driver.execute_script('window.stop()')
print(driver.page_source)
print('打卡失败')

if __name__ == '__main__':
# 加启动配置
driver = webdriver.Edge() # 采用Microsoft Edge
ClockIn(driver)

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

JNU之一键打卡

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » JNU之一键打卡
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏