利用Python+Selenium+Requests自动重连校园
2019-01-22 本文已影响0人
一恪slam
背景
本校的校园网偶尔会自动断开,外出时就无法访问学校的服务器,利用Python
的Selenium
, Requests
五秒钟对当前的联网状态监测一次,如果网络断掉的话,就自动重开一个浏览器连接好校园网之后再关掉浏览器。
浏览器界面
1.png2.jpg
代码
# -*- coding: utf-8 -*-
"""
Created on Mon Jan 21 22:34:26 2019
@author: Yike
"""
from selenium import webdriver
import requests
import time
class Login:
def __init__(self):
self.url = 'your_campus_network_login_url'
self.username = "your_username"
self.password = "your_password"
#判断当前是否可以连网
def is_connect_web(self):
try:
status = requests.get("https://www.baidu.com")
if(status.status_code == requests.codes.ok):
return True
else:
return False
except:
return False
print ('error')
def login(self):
browser = webdriver.Chrome()
browser.get(self.url)
browser.implicitly_wait(10)
user=browser.find_element_by_id("username")
user.send_keys(self.username)
#由于本校园网网站输入密码的文本框被隐藏了,需要先点击并列的上方文本框才能进行输入
browser.find_element_by_xpath('//*[@id="pwd_tip"]').click()
pwd=browser.find_element_by_xpath('//*[@id="pwd"]')
pwd.send_keys(self.password)
#先点击下拉按钮,然后再点击自己想下拉的那个运营商
browser.find_element_by_id("xiala").click()
service=browser.find_element_by_id("bch_service_1")
service.click()
submit=browser.find_element_by_xpath('//*[@id="loginLink_div"]')
submit.click()
#登录成功之后就可以关闭浏览器了
browser.close()
login = Login()
n=1
#五秒钟检测是否能联网,如果不能联网,就需要进行重新登录校园网
while True:
if login.is_connect_web():
time.sleep(5)
else:
login.login()
print '重连第'+str(n)+'次'
n=n+1
后记
由于各大校园网服务系统网站界面不一致,本方法可能无法直接应用各大校园网服务系统,但只要按照本文中的思路编写代码,应该是能实现相应需求的。
问题记录
- 显示错误selenium.common.exceptions.SessionNotCreatedException: Message: session not created:
报错信息具体如下:
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome version must be between 70 and 73
(Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.15.0-58-generic x86_64)
这是由于我很久没有用这个命令了,由于中途又更新了chrome,导致chromedriver和chrome不匹配,所以重新在'https://sites.google.com/a/chromium.org/chromedriver/downloads'去下载相应的chromedriver然后放到‘/usr/bin/chromedriver’下并给予可执行命令即可运行成功。