有的校园网需要每天登录,断网后无法使用别的电脑进行远程连接,所以亟需一个程序让电脑自动登录校园网
1.环境配置
我这里的环境是python3.8+Selenium4.10.0,直接在pycharm的package里面就可以安装
2.Selenium的浏览器驱动,写入环境变量
安装Selenium包后,还需要安装对应的浏览器驱动才能正常运行。浏览器可以是Edge、Chrome或者Firefox,这里以win自带的Edge为例,其他浏览器同理。
①首先找到Edge的版本,这里是115.0.1901.108,然后打开Edge驱动的网址
②核对版本号,下载对应的驱动
③编入环境变量
将下载后的压缩包解压,放在某个地址,如: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)