【Python】基于Selenium实现上海大学校园网自动登录
安装selenium
Selenium官网
以anaconda环境为例,创建一个Selenium的虚拟环境,若不需要可以不做第一、二步
conda create -n selenium python==3.8
conda activate selenium
conda install selenium
或者pip install selenium
安装第三方WebDriver驱动
- 首先明确自己需要使用的浏览器,第三方插件包含有Mozilla、Chrome、Opera、Edge、火狐、Safari等
- 查看自己浏览器的版本,自行查找方法
- 下载对应的第三方插件版本,点击上面浏览器名的超链接即可(Safari不用下)
- 将插件所在的目录添加到系统环境变量中,方法自行查找
以Windows 10 下的Chrome为例,安装第三方插件流程如图所示:
- 查看当前浏览器版本
- 在网站上下载对应版本驱动(Chrome)
- 解压至项目文件夹,本文解压至
F:\Desktop\school
- 在系统变量Path中添加驱动所在目录
- 在cmd中输入chromedriver查看是否添加成功
实现代码
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import socket
import time
username = 'XXXXXXX'
password = 'XXXXXXX'
def is_net_ok():
driver_test = Chrome()
driver_test.implicitly_wait(10)
try:
driver_test.get("http://10.10.9.9:8080")
online_text = driver_test.find_element(By.ID, "userMessage").text
driver_test.quit()
except Exception as e:
print(e)
return False
if online_text == "您已成功连接校园网!":
return True
else:
return False
def main():
while True:
if is_net_ok():
print("online! fine!")
time.sleep(600)
else:
print("offline! sad!")
driver = Chrome()
try:
driver.get("http://10.10.9.9:8080")
driver.find_element(By.ID, "username").send_keys(username + Keys.ENTER + password)
driver.find_element(By.ID, "loginLink_div").click()
driver.quit()
time.sleep(5)
except Exception as e:
print(e)
driver.quit()
if __name__ == "__main__":
main()
每10分钟检测一次是否断网,若断网则重新连接
尝试用过driver.find_element(By.ID, "pwd").send_keys(password)
但有问题,不知道怎么解决就用了代码里的方案
我觉得可能是pwd的那个input标签的type="password"
或者是style="display: none;"
只是初步了解selenium使用,期待大哥解答。