python+pycharm+selenium,并且最后发邮件提醒成功

这篇文章是基于电脑已经安装好pycharm、python和Chromium基础上进行指导的

准备工作

  • 每个人的Google版本不一定相同,在浏览器地址栏输入chrome://version查看自己的版本,必须保证前三个数字(86.0.4240)相同
  • 下载浏览器的对应版本驱动:ChromeDriver - WebDriver for Chrome - Downloads
  • ​安装chromedriver_win32.zip并解压,将其中的chromedriver.exe文件放在Chrome和python的安装目录下(注意是python!!!不是pycharm)

python+pycharm+selenium,并且最后发邮件提醒成功_第1张图片

python+pycharm+selenium,并且最后发邮件提醒成功_第2张图片

  • 配置环境变量,把Chrome的安装路径加进来 

python+pycharm+selenium,并且最后发邮件提醒成功_第3张图片

python+pycharm+selenium,并且最后发邮件提醒成功_第4张图片

 打开pycharm新建项目,开始写代码 

  • 引用库文件 
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即可

python+pycharm+selenium,并且最后发邮件提醒成功_第5张图片

python+pycharm+selenium,并且最后发邮件提醒成功_第6张图片

python+pycharm+selenium,并且最后发邮件提醒成功_第7张图片

  •  找到填报图标并且点击 
# 通过绝对路径方式找到并点击健康信息填报图标
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

python+pycharm+selenium,并且最后发邮件提醒成功_第8张图片

  • 随机体温,提交然后关闭网页
# 找到今天体温的文本框,清空文本框并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,并且生成授权码。

img

  • 代码
# 发送邮件
# 设置服务器所需信息
# 球球邮箱服务器地址
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')

你可能感兴趣的:(python入门,python,selenium)