基于 Selenium 实现上海大学校园网自动登录
一、技术方案
核心工具:
- Selenium:一个用于自动化测试的工具,能够模拟用户在浏览器上的操作。
- 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()
功能解析
init_driver()
:
初始化 Edge WebDriver,并设置隐式等待时间为 10 秒。is_net_ok(driver)
:
通过访问校园网登录页面,检查页面提示是否为 “您已成功连接校园网!”,从而判断网络状态。login_campus_net(driver, username, password)
:
模拟手动登录校园网的操作,包括输入用户名、密码和触发登录。main()
:
主程序负责循环检测网络状态,自动化执行登录操作,确保网络连接的稳定性。
四、注意事项
- Edge WebDriver 的安装:
请确保 Edge 浏览器与 Edge WebDriver 的版本匹配,驱动程序可在 Microsoft 官网 下载。