SLAM、OpenCV、Linux、ROS等

利用Python+Selenium+Requests自动重连校园

2019-01-22  本文已影响0人  一恪slam

背景

本校的校园网偶尔会自动断开,外出时就无法访问学校的服务器,利用PythonSelenium, Requests五秒钟对当前的联网状态监测一次,如果网络断掉的话,就自动重开一个浏览器连接好校园网之后再关掉浏览器。

浏览器界面

1.png
2.jpg

代码

Yike`s Github

# -*- 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

后记

由于各大校园网服务系统网站界面不一致,本方法可能无法直接应用各大校园网服务系统,但只要按照本文中的思路编写代码,应该是能实现相应需求的。

问题记录

  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’下并给予可执行命令即可运行成功。

上一篇下一篇

猜你喜欢

热点阅读