-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCourse.py
More file actions
69 lines (64 loc) · 3.26 KB
/
Course.py
File metadata and controls
69 lines (64 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# -*- coding: utf-8 -*-
# @CreateTime : 2023.9.6
# @UpdateTime : 2023.9.6
# @Author : Always1172
# @File : Course.py
# @说明:适用于北京邮电大学教务系统,可以实现抢课功能,仅为初始版本,未经过大规模测试,仅供本人练手使用,技术佬轻喷,请确保自己在校园网或vpn环境下使用
class Course(object):
def start(self):
''' 1、登录教务系统 '''
#此处输入自己的学号
student_ID = ""
#此处输入自己的教务系统密码
password = ""
#此处输入自己要抢的课程的名称(尽量输入全称,否则有可能无法正确定位课程;若无法输入全称,请保证输入的名称可以少字但无错字,请保证字符串不为“”)
course_name = "创新"
#此处输入课程的授课教师名(有些课程会有不同教师授课,因此为了准确性,可以在此处输入教师名称,若不清楚教师名称,请保证字符串为“”)
teacher_name = ""
#此处输入抢课的课程类型,必修选课请将标号改为2,选修选课请改为3,公选课请改为4,留级选课请改为5
course_type = "[4]"
#使用Chrome浏览器
driver = webdriver.Chrome()
driver.get("https://jwgl.bupt.edu.cn/jsxsd/")
driver.find_element(By.ID, "userAccount").send_keys(student_ID)
driver.find_element(By.ID, "userPassword").send_keys(password)
driver.find_element(By.CSS_SELECTOR, '[type="submit"]').click()
'''2、打开选课界面'''
driver.find_element(By.XPATH, '//*[@class="cygn-content-move xsPerson"]/li').click()
iframe = driver.find_element(By.ID, 'mainIframe')
driver.switch_to.frame(iframe)
driver.find_element(By.ID, "jrxk").click()
driver.find_element(By.XPATH, '//*[@value=" 进入选课 "]').click()
'''3、选课'''
windows = driver.window_handles
driver.switch_to.window(windows[-1])
#driver.find_element(By.XPATH, '//*[@id="topmenu"]/li[3]').click()
#driver.switch_to.frame("mainFrame")
# driver.find_element(By.ID, "dataView")
# driver.find_elements(By.CLASS_NAME, 'center')
while 1:
driver.refresh()
str = '//*[@id="topmenu"]/li'
driver.find_element(By.XPATH, str+course_type).click()
driver.switch_to.frame("mainFrame")
#课程名称
driver.find_element(By.ID, "kcxx").send_keys(course_name)
#授课教师名称
driver.find_element(By.ID, "skls").send_keys(teacher_name)
driver.find_element(By.XPATH, '//*[@onclick="queryKxkcList()"]').click()
driver.implicitly_wait(1)
list_btn = driver.find_elements(By.LINK_TEXT, "选课")
element = list_btn[0]
element.click()
confirm = driver.switch_to.alert
confirm.accept()
alert = driver.switch_to.alert
alert.accept()
driver.refresh();
time.sleep(1)
if __name__ == '__main__':
course = Course()
course.start()