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

发布于:2025-02-10 ⋅ 阅读:(68) ⋅ 点赞:(0)

基于 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 driver


def is_net_ok(driver):
    """检测网络状态"""
    try:
        # 打开校园网登录页面
        driver.get(CAMPUS_NET_URL)
        # 检查页面中是否存在 "已成功连接校园网" 的提示文字
        online_text = driver.find_element(By.ID, "userMessage").text
        return online_text == ONLINE_TEXT
    except Exception as e:
        print(f"检测网络状态出错: {e}")
        return False


def 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 官网 下载。


网站公告

今日签到

点亮在社区的每一天
去签到