基于 Selenium 实现上海大学校园网自动登录

基于 Selenium 实现上海大学校园网自动登录

一、技术方案

核心工具

  1. Selenium:一个用于自动化测试的工具,能够模拟用户在浏览器上的操作。
  2. Edge WebDriver:用于控制 Edge 浏览器的驱动程序。

功能设计

  • 检测网络状态:通过访问校园网登录页面并检查页面上的特定提示文字,判断当前是否联网。
  • 自动登录校园网:模拟用户手动输入用户名和密码的过程,并完成登录。
  • 循环检测与自动登录:程序定时检测网络状态,确保在断网时自动恢复连接。

主要依赖库

pip install selenium

二、实现代码与功能解析

以下是完整的代码实现:

from selenium.webdriver import Edge
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.edge.service import Service
import time# 用户名和密码
USERNAME = '22150247'  # 替换为你的校园网用户名
PASSWORD = '123456'    # 替换为你的校园网密码
DRIVER_PATH = r"D:\SoftwarePackage\edgedriver_win64\msedgedriver.exe"  # EdgeDriver 路径
CAMPUS_NET_URL = "http://10.10.9.9/"  # 校园网登录页面地址
ONLINE_TEXT = "您已成功连接校园网!"  # 网络连接成功的提示文字def init_driver():"""初始化 Edge WebDriver"""service = Service(executable_path=DRIVER_PATH)driver = Edge(service=service)driver.implicitly_wait(10)  # 隐式等待 10 秒return driverdef is_net_ok(driver):"""检测网络状态"""try:# 打开校园网登录页面driver.get(CAMPUS_NET_URL)# 检查页面中是否存在 "已成功连接校园网" 的提示文字online_text = driver.find_element(By.ID, "userMessage").textreturn online_text == ONLINE_TEXTexcept Exception as e:print(f"检测网络状态出错: {e}")return Falsedef login_campus_net(driver, username, password):"""登录校园网"""try:driver.get(CAMPUS_NET_URL)# 输入用户名和密码,并触发登录操作driver.find_element(By.ID, "username_tip").send_keys(username + Keys.TAB + password)driver.find_element(By.ID, "loginLink").send_keys(Keys.ENTER)time.sleep(5)  # 等待登录完成except Exception as e:print(f"登录失败: {e}")def main():"""主程序逻辑"""while True:driver = init_driver()if is_net_ok(driver):print("网络正常!等待10分钟后再次检测。")driver.quit()time.sleep(600)  # 等待 10 分钟后再次检测else:print("网络离线!尝试登录校园网...")login_campus_net(driver, USERNAME, PASSWORD)driver.quit()time.sleep(5)  # 稍作等待后再次检测if __name__ == "__main__":main()

功能解析

  1. init_driver()
    初始化 Edge WebDriver,并设置隐式等待时间为 10 秒。

  2. is_net_ok(driver)
    通过访问校园网登录页面,检查页面提示是否为 “您已成功连接校园网!”,从而判断网络状态。

  3. login_campus_net(driver, username, password)
    模拟手动登录校园网的操作,包括输入用户名、密码和触发登录。

  4. main()
    主程序负责循环检测网络状态,自动化执行登录操作,确保网络连接的稳定性。


四、注意事项

  1. Edge WebDriver 的安装
    请确保 Edge 浏览器与 Edge WebDriver 的版本匹配,驱动程序可在 Microsoft 官网 下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/66876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[DO374] Ansible 配置文件

[DO374] Ansible 配置文件 1. 配置文件位置2. 配置文件3. Ansible 配置4. Ansible的Ad-hoc5. Ansible 模块6. playbook段落7. 任务执行后续8. Ansible 变量8.1 ansible 变量的定义8.1.1 主机变量8.1.2 主机组变量 8.2 vars的循环 9. Ansible Collection10. Ansible-galaxy 安装…

STM32如何测量运行的时钟频率

前言 环境: 芯片:STM32F103C8T6 Keil:V5.24.2.0 一、简介STM32F103C8T6的时钟源 ①HSI 内部高速时钟,RC振荡器,频率为8MHz,精度不高。②HSE 外部高速时钟,可接石英/陶瓷谐振器,频率范围为4MHz~16MHz&…

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection)

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection) 引言 UNION注入是一种利用SQL的UNION操作符进行注入攻击的技术。攻击者通过合并两个或多个SELECT语句的结果集,可以获取数据库中未授权的数据。这种注入技术要…

什么是卷积网络中的平移不变性?平移shft在数据增强中的意义

今天来介绍一下数据增强中的平移shft操作和卷积网络中的平移不变性。 1、什么是平移 Shift 平移是指在数据增强(data augmentation)过程中,通过对输入图像或目标进行位置偏移(平移),让目标在图像中呈现出…

YOLOv10-1.1部分代码阅读笔记-tuner.py

tuner.py ultralytics\utils\tuner.py 目录 tuner.py 1.所需的库和模块 2.def run_ray_tune(model, space: dict None, grace_period: int 10, gpu_per_trial: int None, max_samples: int 10, **train_args): 1.所需的库和模块 # Ultralytics YOLO 🚀, …

大数据智能选课系统

1.产品介绍 产品名称:大数据智能选课系统 一、产品概述 随着信息技术的快速发展,大数据技术在教育领域的应用越来越广泛。针对当前高校选课过程中的繁琐操作、资源分配不均等问题,我们研发了一款基于大数据智能分析的选课系统。本系统旨在…

Shapelet-aeon-GettingStarted

接下来的信息为了让使用者快速把aeon跑起来。我们假定大家都熟悉scikit-learn包。如果您在这方面需要帮助,你可能会需要参考: scikit-learn help Aeon是一个用于从时间序列中学习的开源工具包。除了用于以下学习任务的一系列经典技术之外,它还提供了对时…

C#中通道(Channels)的应用之(生产者-消费者模式)

一.生产者-消费者模式概述 生产者-消费者模式是一种经典的设计模式,它将数据的生成(生产者)和处理(消费者)分离到不同的模块或线程中。这种模式的核心在于一个共享的缓冲区,生产者将数据放入缓冲区&#x…

计算机网络之---TCP连接管理

TCP连接管理 TCP(传输控制协议)是面向连接的协议,在数据传输之前需要建立连接,在数据传输完成后需要断开连接。TCP连接的建立和断开都遵循特定的规则,分别称为三次握手(Three-Way Handshake)和四…

【excel】VBA简介(Visual Basic for Applications)

文章目录 一、基本概念二、语法2.1 数据类型2.11 基本数据类型2.12 常量2.13 数组 2.2 控制语句2.21 条件语句2.22 循环语句2.23 错误处理:On Error2.24 逻辑运算 2.3 其它语句2.31 注释2.32 with语句 2.4 表达式2.41 常见表达式类型2.42 表达式的优先级 2.5 VBA 的…

Git:Cherry-Pick 的使用场景及使用流程

前面我们说了 Git合并、解决冲突、强行回退等解决方案 >> 点击查看 这里再说一下 Cherry-Pick功能,Cherry-Pick不是merge,只是把部分功能代码Cherry-Pick到远程的目标分支 git cherry-pick功能简介: git cherry-pick 是用来从一个分…

机器学习模型调优指南

机器学习模型调优指南 机器学习模型参数调优的作用在于优化模型的性能,使其能够在给定任务上更好地泛化和预测。通过合理调整模型的超参数,能够提高模型的准确性、降低过拟合或欠拟合的风险、加快训练过程等。具体来说,机器学习模型参数调优…

mysql本地安装和pycharm链接数据库操作

MySQL本地安装和相关操作 Python相关:基础、函数、数据类型、面向、模块。 前端开发:HTML、CSS、JavaScript、jQuery。【静态页面】 Java前端; Python前端; Go前端 -> 【动态页面】直观: 静态,写死了…

【Ubuntu与Linux操作系统:一、Ubuntu安装与基本使用】

第1章 Ubuntu安装与基本使用 1.1 Linux与Ubuntu Linux是一种开源、类Unix操作系统内核,拥有高稳定性和强大的网络功能。由于其开源性和灵活性,Linux被广泛应用于服务器、嵌入式设备以及桌面环境中。 Ubuntu是基于Debian的一个流行Linux发行版&#xf…

数据结构与算法之二叉树: LeetCode 654. 最大二叉树 (Ts版)

最大二叉树 https://leetcode.cn/problems/maximum-binary-tree/ 描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值递归地在最大值 左边 的 子数组前缀上 构建左子树递归地在最大值…

Pulsar客户端如何控制内存使用

Pulsar客户端如何控制内存使用 一、使用场景 在实际应用中,Pulsar客户端的内存使用控制是一个重要的性能优化点。假设有一个搜索类业务需要记录用户搜索请求,以便后续分析搜索热点和优化搜索效果。以下是一个简化的代码示例: PulsarClient…

【Unity高级】一文了解Unity 中的条件编译(附所有指令)

一、Unity中的条件编译 Unity 对 C# 语言的支持包括使用指令,这些指令允许您根据是否定义了某些脚本符号,选择性地包含或排除代码的编译。有关这些指令在 C# 中如何工作的更多信息,请参阅微软关于 C# 预处理器指令 的文档。 (一…

苍穹外卖08——(涉及接收日期格式数据、ApachePOI导出报表、sql获取top10菜品数据)

营业额统计 service层 在需要处理空值、与数据库交互或使用集合时,Integer 、Double是更好的选择。 // 导入string工具类 import org.apache.commons.lang.StringUtils; Service // 标记该类为Spring的服务组件 Slf4j // 引入日志功能 public class Repor…

微信小程序订阅消息提醒-云函数

微信小程序消息订阅分2种: 1.一次性订阅:用户订阅一次就可以推送一次,如果需要多次提醒需要多次订阅。 2.长期订阅:只有公共服务领域,如政务、医疗、交通、金融和教育等。‌在用户订阅后,在很长一段时间内…

青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理

青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理 一、状态管理二、Vuex1. 安装Vuex2. 创建Vuex Store3. 在Vue应用中使用Store4. 在组件中使用状态5. 模块化Store 三、Vuex应用示例1. 创建项目2. 安装Vuex3. 设置Vuex Store4. 在主项目中使用Store5. 创建组件6. 更新…