使用python代码实现自动登录校园网(以CPU为例)

有的校园网需要每天登录,断网后无法使用别的电脑进行远程连接,所以亟需一个程序让电脑自动登录校园网

 1.环境配置

我这里的环境是python3.8+Selenium4.10.0,直接在pycharm的package里面就可以安装

 2.Selenium的浏览器驱动,写入环境变量

安装Selenium包后,还需要安装对应的浏览器驱动才能正常运行。浏览器可以是Edge、Chrome或者Firefox,这里以win自带的Edge为例,其他浏览器同理。

①首先找到Edge的版本,这里是115.0.1901.108,然后打开Edge驱动的网址

Chrome:ChromeDriver - WebDriver for Chrome - Downloads
Edge:Microsoft Edge WebDriver - Microsoft Edge Developer
Firefox:Releases · mozilla/geckodriver · GitHub
Safari:WebDriver Support in Safari 10 | WebKit

②核对版本号,下载对应的驱动

③编入环境变量

将下载后的压缩包解压,放在某个地址,如:D:\Program Files\edgedriver

此电脑→高级系统设置→环境变量→系统变量→Path→编辑→新建→输入地址→确定

3.查询Xpath,因为用户名和密码的输入要进行定位,在第4部分的元素定位会用到

这里使用edge自带的DevTools进行检查元素,得到各个元素的Xpath

这样就得到了Xpath

4.编写代码,将登录过程写成login函数

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

def login():
    # 打开浏览器,option的作用是隐藏浏览器窗口(静默执行),去掉option以后会弹出浏览器窗口
    option = webdriver.EdgeOptions()
    option.add_argument('headless')
    browser = webdriver.Edge(options=option)

    # 打开登录网址,给它5s时间加载
    browser.get('http://192.168.199.21')
    sleep(2)

    # 如果是注销页,说明已登陆过,直接退了
    if browser.title == "注销页":
        browser.quit()  # 退出浏览器
        print("已经登录过了")

    # 如果是上网登录页,说明未登录,速速登录
    elif browser.title == "上网登录页":
        elem = browser.find_element(By.XPATH,
                                    '//*[@id="edit_body"]/div[2]/div[15]/form/input[2]')  
    # 这里的XPATH就是前面用元素审查复制得到的Xpath,用于定位元素
        sleep(0.5)
        elem.clear()  # 有时候对话框会自动填充,所以先clear
        sleep(0.5)
        elem.send_keys('12345678')  # 这里输入用户名(即学号)
        sleep(0.5)
        elem = browser.find_element(By.XPATH, '//*[@id="edit_body"]/div[2]/div[15]/form/input[3]')
        elem.clear()
        sleep(0.5)
        elem.send_keys('12345678')  # 这里输入用户名(即学号)
        sleep(0.5)
        elem = browser.find_element(By.XPATH, '//*[@id="edit_body"]/div[2]/div[15]/form/input[1]')
        sleep(0.5)
        browser.execute_script("arguments[0].click();", elem)  # 这里不直接用.click()是因为这里报错,报错内容是有阻挡,所以换了种方法进行click
        browser.quit()  # 退出浏览器
        print("登录成功")

5.自动运行,使用schedule包自动执行

import schedule
import time
schedule.every(1).minutes.do(login)
#schedule.every().day.at("0:01").do(run)  # or每天的0:01执行一次任务,因为cpu容易0点断网
while True:
    schedule.run_pending()
    time.sleep(2)

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值