需求

这几天要去出差,电脑在宿舍只要用了25G流量,无论是否还剩流量,都会被强制下线需要重新登录,所以需要检查能否联网然后登陆

而且最近selenium库有了一些大更新,最主要的就是查找网页元素的函数进行了修改,导致之前的程序都会报错,顺便做下之前文章的更新内容

但是夸奖一下校园网,他终于不是在url发get请求来登录了,进行了md5加密,导致我没法简单发requests请求来登录了

selenium库更新

曾经查找元素的命令(以xpath查找为例)

1
2
3
from selenium import webdriver

driver.find_element_by_xpath('//*[@id="kw"]').send_keys('this is a test')

如今无论查找方式都是用一个函数,查找方式变成了第一个参数

1
2
3
4
from selenium import webdriver
from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, "/html/body/main/section/div[1]/div[2]/input")

其他倒是都是一些小问题

自动登录程序

毕竟是校园网,我猜网页xpath短时间内都不会有变化hhh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import requests

username = "123456"
password = "654321"

while True:
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
try:
requests.get(url='https://baidu.com/')
print("Connected to the internet")
except:
try:
print("Not connected to the internet, try to log in...")
driver = webdriver.Edge()
driver.minimize_window()
driver.get("http://login.cumtb.edu.cn/")
driver.find_element(By.XPATH, "/html/body/main/section/div[1]/div[2]/input").send_keys(username)
driver.find_element(By.XPATH, "/html/body/main/section/div[1]/div[3]/input").send_keys(password)
driver.find_element(By.XPATH, "/html/body/main/section/div[1]/div[5]/button").click()
time.sleep(3)
print('remain_flow:'+driver.find_element(By.XPATH, "/html/body/main/section/div[1]/div[5]/span[2]").text)
driver.quit()
except:
print('Failed to log in.')
time.sleep(60)