0
点赞
收藏
分享

微信扫一扫

Python+selenium4 自动化签到

上善若水山西太原 2022-04-14 阅读 107
python

文章目录


前期准备

需要下载selenium库 和 Edge浏览器插件

具体下载可以看这篇博客:
selenium和Edge插件的安装

当然看文档也是必不可少的 推荐这个文档是针对Edge
selenium文档
selenium一定要下载selenium4的版本、对Edge很多操作进行了支持




一、前言

本篇不会涉及教程、主要是记录一下解决代码、只基于博主本校

二、步骤

1.引入库

from time import sleep   
 #sleep 可以让程序停一下给网页加载时间
from selenium import webdriver   
#WebDriver 允许你通过模拟用户交互来自动执行 Microsoft Edge
from selenium.webdriver.common.by import By
#By 是提供定位界面的
from selenium.webdriver.edge.options import Options
#最后一个是无头浏览器的库  也就是可以后台执行 看不到执行过程








3.无显运行

也就是不显示浏览器进行的过程,如果想要看到运行过程,可以去掉几行代码即可
在你刚开始写的时候肯定是需要显示的,当你写完调试完即可使用无头后台运行





无显示方法

from selenium.webdriver.edge.options import Options
#这是selenium4 专门对edge 的库  通过此库可以实现无头浏览器

options = Options()               #创建Option对象
options.add_argument("headless")  # 添加无头模式参数

wd = webdriver.Edge(options=options)  #把参数放到webdriver对象里



所需网址和参数

#好像暴露学校了  进入填报网页
url1 = 'https://authserver.szpt.edu.cn/authserver/login?service=https://i.szpt.edu.cn/deal_with_st'


# 这里需要url2 是因为web端切换到申报界面很卡,所以提前用selenium库抓取了手机签到界面  
# 直接一步跳转到签到 可以省略了许多步骤 需要先登录完才跳转的进去
url2 = 'https://ehall.szpt.edu.cn:443/amp-auth-adapter/login?service=https%3A%2F%2Fehall.szpt.edu.cn%3A443%2Fpublicappinternet%2Fsys%2Fszptpubxsjkxxbs%2F*default%2Findex.do%3FnodeId%3D0%26taskId%3D0%26processInstanceId%3D0%26instId%3D0%26defId%3D0%26defKey%3D0'

user_name = '填自己账号'
passwd = '填自己密码'

微信推送提醒

「Server酱」是从服务器、路由器等设备上推消息到手机的工具。

配置文件中填入SendKey,即可使用
你也可以自己往 https://sctapi.ftqq.com/.send 发送请求,就可以收到消息啦

具体可以去server酱的网站去查看server酱

免费使用但每天只能使用五次

def post_send():
    url = f'https://sctapi.ftqq.com/这里填自己的SENDKEY.send?title=这里填你要发送的内容需要发中文需要转成urlencode编码'
    wd.get(url)    #打开url完成发送

完整代码

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options

url1 = 'https://authserver.szpt.edu.cn/authserver/login?service=https://i.szpt.edu.cn/deal_with_st'
url2 = 'https://ehall.szpt.edu.cn:443/amp-auth-adapter/login?service=https%3A%2F%2Fehall.szpt.edu.cn%3A443%2Fpublicappinternet%2Fsys%2Fszptpubxsjkxxbs%2F*default%2Findex.do%3FnodeId%3D0%26taskId%3D0%26processInstanceId%3D0%26instId%3D0%26defId%3D0%26defKey%3D0'

user_name = '填自己账号'
passwd = '填自己密码'


def to_login(user_name, passwd):  #去登录函数
    wd.find_element(By.ID, 'username').send_keys(user_name)
    sleep(0.5)
    wd.find_element(By.ID, 'password').send_keys(passwd+'\n')  #这里加\n 代表enter提交
    sleep(1)


def do_sign():   #去签到函数 
    
    sleep(1)
    # 进入健康填报界面
    wd.get(url2)
    sleep(3)

    # 跳转进入提交
    wd.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/button').click()
    sleep(3)

    # 我承诺按钮
    wd.find_element(By.XPATH, '//*[@id="app"]/div/div[3]/div/a/div[2]/div[1]/div/label/span[1]/span').click()
    sleep(2)

    # 我承诺 后点击提交
    wd.find_element(By.XPATH, '//*[@id="app"]/div/button').click()
    sleep(2)

    # 最后的提交按钮 button[1]是取消 可以用来测试    [2] 是提交
    wd.find_element(By.XPATH, '//*[@class="mint-msgbox-wrapper"]/div/div[3]/button[2]').click()
    sleep(3)


def post_send():  #server酱调用
    url = f'https://sctapi.ftqq.com/这里填自己的SENDKEY.send?title=这里填你要发送的内容需要发中文需要转成urlencode编码'
    wd.get(url)


if __name__ == '__main__':
    options = Options()
    options.add_argument("headless")  # 无显示模式

    wd = webdriver.Edge(options=options) #如果希望看到运行界面把括号里的去内容掉即可
    wd.get(url1)
    wd.maximize_window()
    to_login(user_name, passwd)
    do_sign()
    print("成功打卡")

    post_send()
    wd.quit()




提醒

此代码只自动提交不改动任何参数,如果需要改动日期等填报信息请自行编写代码改动

举报

相关推荐

0 条评论