Ubuntu20.04实现Python基于Selenium实现上海大学校园网自动登录
以anaconda环境为例,创建一个Selenium的虚拟环境:
一、安装selenium
1. conda create -n selenium python==3.8
2. conda activate selenium
3. pip install selenium
二、安装第三方WebDriver驱动
我使用的是Chrome(这里就以ChromeDriver为例):
1.下载谷歌浏览器:
使用wget下载最新的Google Chrome .deb软件包:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
2.安装谷歌浏览器:
sudo apt install ./google-chrome-stable_current_amd64.deb
3.启动
4.查看版本:输入
chrome://version
版本为:99.0.4844.84
5.下载Chrome对应版本驱动
没有99.0.4844.84的话,可以忽略最后两个数字,选择99.0.4844.xx即可。
6.解压至文件夹,
这里我解压到/home/labtory702/Network_connect中
7.在环境变量中添加驱动所在目录:
在终端中输入:
sudo gedit ~/.bashrc
打开.bashrc文件后,在最后一行输入:
export CHROMERDRIVERPATH=$CHROMERDRIVERPATH:/home/labtory702/Network_connect
添加好之后保存关闭。
在终端输入:
source ~/.bashrc
之后重新再进一下刚刚建立好的虚拟环境中。
查看路径:
echo ${CHROMEDRIVERPATH}
8.验证安装:
输入chromedriver
出现下列错误:
解决方法,输入:
sudo apt install chromium-chromedriver
最后输入再输入:chromedriver,显示添加成功:
main.py代码如下:(代码来自于一位大佬的CSDN)
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分钟检测一次是否断网,若断网则重新连接
参考资料
[1] 【Python】基于Selenium实现上海大学校园网自动登录