概述
此脚本是针对四川大学本科教务系统开发的自动化选课脚本, 方便学生选课。 对其它网站无效, 但可以作为参考。
在脚本中写入想要选择的课程号与课序号, 以及用户名和密码, 即可不断自动刷课直到选课成功为止。
代码实现
#coding:utf-8
from selenium import webdriver
import time
browser=webdriver.Chrome() #浏览器
kch = "311084030" #想要选择的课程号
kxh = "01" #想要选择的课序号
def isElementExist(_browser, _string, _type):
flag=True
browser=_browser
try:
if _type == 'name':
browser.find_element_by_name(_string)
elif _type == 'xpath':
browser.find_element_by_xpath(_string)
elif _type == 'text':
browser.find_element_by_link_text(_string)
return flag
except:
flag=False
return flag
def phase1():
#打开网址,并登录
browser.get("http://202.115.47.141/login.jsp")
s1 = 'username' #此处为用户名
s2 = 'password' #此处为密码
while False == isElementExist(browser, "zjh", "name"): #若打开失败则重新打开
browser.get("http://202.115.47.141/login.jsp")
browser.find_element_by_name("zjh").send_keys(s1)
browser.find_element_by_name("mm").send_keys(s2)
browser.find_element_by_id("btnSure").click()
phase2()
def phase2():
#打开选课管理界面
path = "//*[@id='divCoHome']/table/tbody/tr/td[2]/table/tbody/tr[1]//*[@class='hometopBg1']/tbody/tr/td/a"
browser.switch_to_default_content()
browser.switch_to_frame("bottomFrame")
browser.switch_to_frame("mainFrame")
while False == isElementExist(browser, path, "xpath"): #失败刷新页面, 回退到phase1
browser.refresh()
phase1()
browser.find_element_by_xpath(path).click()
phase3()
def phase3():
#打开选课方案界面
browser.switch_to_default_content()
browser.switch_to_frame("bottomFrame")
browser.switch_to_frame("menuFrame")
path = "//*[@id='Xkgl']//*[@class='content2']/tbody/tr[2]/td/a"
while False == isElementExist(browser, path, "xpath"): #失败刷新页面, 回退到phase1
browser.refresh()
phase1()
browser.find_element_by_xpath(path).click()
phase4()
def phase4():
#搜索课程
browser.switch_to_default_content()
browser.switch_to_frame("bottomFrame")
browser.switch_to_frame("mainFrame")
text = '自由选择'
while False == isElementExist(browser, text, "text"): #失败刷新页面, 回退到phase2
browser.refresh()
phase2()
browser.find_element_by_link_text(text).click()
browser.switch_to_frame("inforUpContent")
while False == isElementExist(browser, "kch", "name"): #失败刷新页面, 回退到phase2
browser.refresh()
phase2()
browser.find_element_by_name("kch").send_keys(kch)
browser.switch_to.parent_frame()
browser.find_element_by_xpath("//*[@title='确定']").click()
phase5()
def phase5():
#选择课程
browser.switch_to_frame("inforUpContent")
value = kch+'_'+kxh
path = "//*[@value='%s']"%value
while False == isElementExist(browser, path, "xpath"): #失败刷新页面, 回退到phase2
browser.refresh()
phase2()
browser.find_element_by_xpath(path).click()
browser.switch_to.parent_frame()
browser.find_element_by_xpath("//*[@title='确定']").click()
def main():
phase1()
#等待用户输入退出
waitkey=raw_input()
browser.quit()
if __name__ == '__main__':
main()
转载请注明原文地址: https://ju.6miu.com/read-25416.html