这篇文章是基于电脑已经安装好pycharm、python和Chromium基础上进行指导的
from selenium import webdriver
import random
from time import sleep
# 成功之后发送邮件
import smtplib
from email.mime.text import MIMEText
# 选择Chrome浏览器
options = webdriver.ChromeOptions()
# 浏览器的位置,需要自己更改
options.binary_location = "C:\\Users\\****\\AppData\\Local\\Chromium\\Application\\Chromium.exe"
# 浏览器驱动的位置,需要自己更改
driver = webdriver.Chrome("C:\\Users\\****\\AppData\\Local\\Chromium\\Application\\chromedriver.exe", options=options)
# 学校的打卡网页,需要自己更改
driver.get("https://hsm.sspu.edu.cn")
print("Successfully entered the web page")
# 这两步把操作界面切换到新打开的浏览器页面
now_handle = driver.current_window_handle
driver.switch_to.window(now_handle)
# 清除输入框内容、输入账号密码,需要自己更改
driver.find_element_by_id("username").send_keys("**************") # 账号
print("Successfully entered the username")
driver.find_element_by_id("password").send_keys("**************") # 密码
print("Successfully entered the password")
# 登录
driver.find_element_by_class_name("submit_button").click()
print("Successfully log in to your account")
# 当前打开的所有窗口
windows = driver.window_handles
# 将操作转换到最新打开的窗口
driver.switch_to.window(windows[-1])
driver.find_element_by_id(),driver.find_element_by_class_name(),函数()里面的内容需要自己选中对应的元素,然后按鼠标右键进行检查,复制对应的id或者class即可
# 通过绝对路径方式找到并点击健康信息填报图标
driver.find_element_by_xpath("/html/body/form/div[6]/ul/li[1]/a/div").click()
print("Successfully entered the Daily Newspaper")
# 延时加载
sleep(2)
# 当前打开的所有窗口
windows = driver.window_handles
# 转换到最新打开的窗口
driver.switch_to.window(windows[-1])
driver.find_element_by_xpath()函数()里面的内容需要自己选中对应的元素,然后按鼠标右键进行检查,xpath则需要右击-Copy-Copy full XPath
# 找到今天体温的文本框,清空文本框并send_keys()输入(36.0,37.0)之间的随机数
driver.find_element_by_id("p1_TiWen-inputEl").clear()
driver.find_element_by_id("p1_TiWen-inputEl").send_keys('%.1f' % random.uniform(36.0, 37.0))
print("Successful random body temperature")
# 找到并点击提交按钮
driver.find_element_by_class_name("f-btn-inner").click()
print("Successful submission")
sleep(5)
# 关闭网页
driver.close()
print("done")
driver.find_element_by_id(),driver.find_element_by_class_name(),函数()里面的内容需要自己选中对应的元素,然后按鼠标右键进行检查,复制对应的id或者class即可,同上方的操作 。
二工大校友可直接修改代码中的浏览器位置、驱动位置以及账号密码之后立即使用。
此处用的是QQ邮箱,需要提前登录球球邮箱网页版点击设置-账户,滑到最下面开启SMTP,并且生成授权码。
# 发送邮件
# 设置服务器所需信息
# 球球邮箱服务器地址
mail_host = 'smtp.qq.com'
# QQ用户名
mail_user = 'QQ账号'
# 密码(部分邮箱为授权码)
mail_pass = '授权码'
# 邮件发送方邮箱地址
sender = 'QQ账号@qq.com'
# 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receivers = ['QQ账号@qq.com']
# 设置email信息
# 邮件内容设置
message = MIMEText('每日一报自动打卡成功', 'plain', 'utf-8')
# 邮件主题
message['Subject'] = '每日一报'
# 发送方信息
message['From'] = sender
# 接受方信息
message['To'] = receivers[0]
# 登录并发送邮件
smtpObj = smtplib.SMTP()
# 连接到服务器
smtpObj.connect(mail_host, 25)
# 登录到服务器
smtpObj.login(mail_user, mail_pass)
# 发送
smtpObj.sendmail(
sender, receivers, message.as_string())
# 退出
smtpObj.quit()
print('success')
from selenium import webdriver
import random
from time import sleep
# 成功之后发送邮件
import smtplib
from email.mime.text import MIMEText
# 选择Chrome浏览器
options = webdriver.ChromeOptions()
# 浏览器的位置,需要自己更改
options.binary_location = "C:\\Users\\***\\AppData\\Local\\Chromium\\Application\\Chromium.exe"
# 浏览器驱动的位置,需要自己更改
driver = webdriver.Chrome("C:\\Users\\***\\AppData\\Local\\Chromium\\Application\\chromedriver.exe", options=options)
# 学校的打卡网页,需要自己更改
driver.get("https://hsm.sspu.edu.cn")
print("Successfully entered the web page")
# 这两步把操作界面切换到新打开的浏览器页面
now_handle = driver.current_window_handle
driver.switch_to.window(now_handle)
# 清除输入框内容、输入账号密码,需要自己更改
driver.find_element_by_id("username").send_keys("账号") # 账号
print("Successfully entered the username")
driver.find_element_by_id("password").send_keys("密码") # 密码
print("Successfully entered the password")
# 登录
driver.find_element_by_class_name("submit_button").click()
print("Successfully log in to your account")
# 当前打开的所有窗口
windows = driver.window_handles
# 将操作转换到最新打开的窗口
driver.switch_to.window(windows[-1])
# 通过绝对路径方式找到并点击健康信息填报图标
driver.find_element_by_xpath("/html/body/form/div[6]/ul/li[1]/a/div").click()
print("Successfully entered the Daily Newspaper")
# 延时加载
sleep(2)
# 当前打开的所有窗口
windows = driver.window_handles
# 转换到最新打开的窗口
driver.switch_to.window(windows[-1])
# 找到今天体温的文本框,清空文本框并send_keys()输入(36.0,37.0)之间的随机数
driver.find_element_by_id("p1_TiWen-inputEl").clear()
driver.find_element_by_id("p1_TiWen-inputEl").send_keys('%.1f' % random.uniform(36.0, 37.0))
print("Successful random body temperature")
# 找到并点击提交按钮
driver.find_element_by_class_name("f-btn-inner").click()
print("Successful submission")
sleep(5)
# 关闭网页
driver.close()
print("done")
# 发送邮件
# 设置服务器所需信息
# QQ邮箱服务器地址
mail_host = 'smtp.qq.com'
# QQ用户名
mail_user = 'QQ账号'
# 密码(部分邮箱为授权码)
mail_pass = '授权码'
# 邮件发送方邮箱地址
sender = 'QQ账号@qq.com'
# 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receivers = ['QQ账号@qq.com']
# 设置email信息
# 邮件内容设置
message = MIMEText('每日一报自动打卡成功', 'plain', 'utf-8')
# 邮件主题
message['Subject'] = '每日一报'
# 发送方信息
message['From'] = sender
# 接受方信息
message['To'] = receivers[0]
# 登录并发送邮件
smtpObj = smtplib.SMTP()
# 连接到服务器
smtpObj.connect(mail_host, 25)
# 登录到服务器
smtpObj.login(mail_user, mail_pass)
# 发送
smtpObj.sendmail(
sender, receivers, message.as_string())
# 退出
smtpObj.quit()
print('success')