基于Selenium的校园网自动登录脚本

前言

学校校园网要手动登录,输入用户名和密码,真麻烦,所以写了个脚本。
这学期接触了一个自动化测试工具Selenium,开源,安装简易,轻量,为了方便使用webdriver,我使用了火狐浏览器的geckodriver(火狐官方的webdriver)。做自动登录还可以使用httplib/urllib等等,设置下header和post即可,感兴趣的可以试一试。

环境

本机环境:macOS High Sierra 版本10.13
Python版本: 3.5.2
浏览器:firefox https://github.com/mozilla/geckodriver/releases 位置可以自己定

需求

1.首先确定下我们的情况和需求:登录页面非常简单,脚本自动找到用户名和密码栏,自动输入,自动点击。

基于Selenium的校园网自动登录脚本_第1张图片
2.查看表单,用浏览器自带的“检查”即可,找到“Network”一栏,查看“Form Data”。

基于Selenium的校园网自动登录脚本_第2张图片

  1. 查看元素,找到“登录”按钮的id(或者class)等等。

中间遇到的一些问题:

  1. 如何“双击运行”这个脚本?
    首先考虑的是封装,但是后来想了下可能不用这么麻烦。(封装可以使用pyinstaller,语句:pip install pyinstaller)其实,在脚本中,第一句加上#!/usr/bin/env python,只要把py后缀名改成.command即可变成可执行文件。
    这里有个小细节:#!/usr/bin/env python#!/usr/bin/python的区别:
    这句话是为了确定python解释器的位置。关于区别,简单来说,env可以查找python的安装路径,再调用对应的解释器。而后一种可以理解为把路径“写死了”,告诉机器找到/usr/bin下的python解释器。
    好了,现在给脚本添加了解释器寻找语句,还把后缀改成了.command。
    又发现了这样的问题:双击运行时显示command后缀文件运行提示没有权限。在Terminal中是这样的:
lixuefeideMacBook-Air:bin lixuefei$ /Users/lixuefei/Desktop/autoSign1.command 
-bash: /Users/lixuefei/Desktop/autoSign1.command: Permission denied

右键查看“显示简介”更改读写权限是没用的。要执行chmod +x /文件路径,具体如下:

chmod +x /Users/lixuefei/Desktop/autoSign1.command 

好了,现在可以运行了。
基于Selenium的校园网自动登录脚本_第3张图片
怎么能优雅地终止ping?答案是:Ctrl+Z即可我ping了百度,但是发现在终端系那是的是:www.shifen.com
这是什么?打开以后发现是nginx,应该是域名别名。
基于Selenium的校园网自动登录脚本_第4张图片

源代码如下:

#!/usr/bin/env python
import os
#import urllib,urllib2,httplib,cookielib
import time
from selenium import webdriver
def login():
    url = "http://p.nju.edu.cn"
    username = "用户名"
    password ="密码"

    driver = webdriver.Firefox(executable_path='/Users/lixuefei/geckodriver')
    # driver.get(url)
    # time.sleep(1)

    driver.find_element_by_id('username').send_keys(username) # 自动敲入用户名
    driver.find_element_by_id('password').send_keys(password) # 自动敲入用户名
    driver.find_element_by_id('loginBtn').click()#模拟点击登录
    driver.close()
exit_code = os.system('ping www.baidu.com')#ping下看看通不通
if exit_code:
    login()
    # raise Exception('connect failed.')

你可能感兴趣的:(工具)