美文网首页SLAM、OpenCV、Linux、ROS等
利用Python+Selenium+Requests自动重连校园

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

作者: 一恪slam | 来源:发表于2019-01-22 00:05 被阅读0次

    背景

    本校的校园网偶尔会自动断开,外出时就无法访问学校的服务器,利用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’下并给予可执行命令即可运行成功。

    相关文章

      网友评论

        本文标题:利用Python+Selenium+Requests自动重连校园

        本文链接:https://www.haomeiwen.com/subject/peskjqtx.html