1、登录VPN
想必大家的第二学期都是在家度过的,既然脱离了校园网的环境,想要查课表和成绩就必须要登录VPN。
登录的步骤为:1、输入用户名
2、输入密码
3、点击“登录”按钮
代码如下,别忘了强制等待
#登录VPN
def login_vpn():
#用户名
driver.find_element(By.CSS_SELECTOR, '#user_name').send_keys(bupt_username1)
time.sleep(1)
#密码
driver.find_element(By.CSS_SELECTOR, '.password-input>input').send_keys(bupt_password1)
time.sleep(1)
# 点击登陆按钮
driver.find_element(By.CSS_SELECTOR, 'button').click()
#进入信息门户
driver.find_element(By.CSS_SELECTOR, '.block-group__item__wrap').click()
time.sleep(1)
2、登录信息门户系统
过程类似,但要注意,信息门户系统登录界面的输入框和登录按钮在嵌套页面里,因此需要附加一段进入嵌套页面的代码,这一点和登录VPN不同。
#登录信息门户
def login_window():
#找到iframe的id属性
switch_window(1)
# time.sleep(3)
iframe = driver.find_element(By.CSS_SELECTOR, '#loginIframe')
# time.sleep(3)
driver.switch_to.frame(iframe)
#输入用户名和密码
driver.find_element(By.CSS_SELECTOR, '.item-box:nth-child(1) input:nth-child(1)#username').send_keys(bupt_username2)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '.item-box:nth-child(1) input:nth-child(1)#password').send_keys(bupt_password2)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '.submit-btn:nth-child(1)').click()
3、登录本科教务系统
登录本科教务系统的过程分两步,第一步是点击“本科教务系统”按钮,第二步是输入用户名、密码并登录。
#点击进入本科教务系统
def switch_to_JiaowuSystem():
time.sleep(2)
#鼠标下拉页面
js= 'document.documentElement.scrollTop=document.documentElement.scrollHeight'
driver.execute_script(js)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '.col-xs-3:nth-child(1)').click()
#登录本科教务系统
def login_JiaowuSystem():
#跳转到窗口3
switch_window(2)
#输入用户名和密码
driver.find_element(By.CSS_SELECTOR, '#userAccount').send_keys(bupt_username3)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '#userPassword').send_keys(bupt_password3)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, 'button').click()
#切换页面
def switch_window(page):
windows = driver.window_handles
driver.switch_to.window(windows[page])
注意,由于此时已经开启多个浏览器窗口,一定不要忘了加切换浏览器窗口的函数,否则将运行不出结果。
4、完整代码
注:就本代码而言,鉴于北邮校园网在一次性输对密码的情况下不需要验证码,本人未考虑验证码相关的问题。如果大家在跑程序的过程遇到出现验证码的情况,请关闭程序再跑,根据本人经验,跑个三四次就不会出现验证码了。
源码链接如下:链接:https://pan.baidu.com/s/1lehe-X-ttTpUvsitHlOSuQ
提取码:h2gy
来自百度网盘超级会员V4的分享
该压缩包里已经包含了谷歌和火狐的驱动,建议使用谷歌浏览器,如果驱动不适配,请自行更换适配的驱动
from constants import bupt_password1, bupt_password2,bupt_password3
from constants import bupt_username1,bupt_username2,bupt_username3
import time
from selenium import webdriver # 浏览器对象
from selenium.webdriver.common.by import By # 定位器功能
#登录VPN
def login_vpn():
#用户名
driver.find_element(By.CSS_SELECTOR, '#user_name').send_keys(bupt_username1)
time.sleep(1)
#密码
driver.find_element(By.CSS_SELECTOR, '.password-input>input').send_keys(bupt_password1)
time.sleep(1)
# 点击登陆按钮
driver.find_element(By.CSS_SELECTOR, 'button').click()
#进入信息门户
driver.find_element(By.CSS_SELECTOR, '.block-group__item__wrap').click()
time.sleep(1)
#登录信息门户
def login_window():
#找到iframe的id属性
switch_window(1)
# time.sleep(3)
iframe = driver.find_element(By.CSS_SELECTOR, '#loginIframe')
# time.sleep(3)
driver.switch_to.frame(iframe)
#输入用户名和密码
driver.find_element(By.CSS_SELECTOR, '.item-box:nth-child(1) input:nth-child(1)#username').send_keys(bupt_username2)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '.item-box:nth-child(1) input:nth-child(1)#password').send_keys(bupt_password2)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '.submit-btn:nth-child(1)').click()
#点击进入本科教务系统
def switch_to_JiaowuSystem():
time.sleep(2)
#鼠标下拉页面
js= 'document.documentElement.scrollTop=document.documentElement.scrollHeight'
driver.execute_script(js)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '.col-xs-3:nth-child(1)').click()
#登录本科教务系统
def login_JiaowuSystem():
#跳转到窗口3
switch_window(2)
#输入用户名和密码
driver.find_element(By.CSS_SELECTOR, '#userAccount').send_keys(bupt_username3)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, '#userPassword').send_keys(bupt_password3)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, 'button').click()
#切换页面
def switch_window(page):
windows = driver.window_handles
driver.switch_to.window(windows[page])
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get('https://webvpn.bupt.edu.cn/login')
driver.implicitly_wait(10)
driver.maximize_window()
login_vpn()
login_window()
switch_to_JiaowuSystem()
login_JiaowuSystem()
input() # 阻止浏览器关闭
driver.quit()
bupt_username1 = '请自行输入'
bupt_password1= '请自行输入'
bupt_username2 = '请自行输入'
bupt_password2= '请自行输入'
bupt_username3= '请自行输入'
bupt_password3= '请自行输入'