前言:
又到了一學期一度的渣電的退補選,退補選這東西 誰退了誰搶到就是本事,閑着沒事,寫一個自動化搶課腳本。
使用方法:`
- 安裝selenium
-
username改成自已的學号
pwd改成自已的密碼
-
coursePath修改成自已想要的課的xpath路徑,得到xpath的方法為
使用chrome打開選課頁面,找到所選課程,右鍵"檢查",然後再調試界面預設選擇的藍色區域右鍵copy->copy xpath.即可
如果xpath中間有"或其它特殊符号,在xpath路徑裡面的"前加\
- 重新整理不要太頻繁
代碼:
__author__ = 'jmh081701'
#coding:utf8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
import sys
import threading
class CourseSelect:
def __int__(self):
pass
def loginToSelectCource(self,id,pwd):
self.url="http://portal.uestc.edu.cn"
self.brower =webdriver.Chrome("C:\\chromedriver.exe")
brower=self.brower
page =brower.get(self.url)
username=brower.find_element_by_id('username')
password=brower.find_element_by_id('password')
username.send_keys(id)
password.send_keys(pwd)
loginBtn=brower.find_element_by_xpath("//*[@id=\"casLoginForm\"]/p[4]/button")
loginBtn.submit()
brower.get("http://eams.uestc.edu.cn/eams/home.action")
time.sleep(2)
brower.get("http://eams.uestc.edu.cn/eams/home.action")
time.sleep(2)
kcgl=brower.find_element_by_xpath("//*[@id=\"MLeft\"]/div/ul/li[2]/a/div")
kcgl.click()
time.sleep(2)
xk=brower.find_element_by_xpath("//*[@id=\"MLeft\"]/div/table[2]/tbody/tr[1]/td[7]/div[2]/a")
xk.click()
def selectA(self,xpath="//*[@id=\"lesson296968\"]/td[11]/a"):
#選A類課
brower=self.brower
urlA="http://eams.uestc.edu.cn/eams/stdElectCourse!defaultPage.action?electionProfile.id=1137"
brower.get(urlA)
try:
brower.switch_to_alert().accept()
except:
pass
xk=brower.find_element_by_xpath(xpath)
xk.click()
brower.switch_to_alert().accept()
time.sleep(1)
def selectB(self,xpath="//*[@id=\"lesson303459\"]/td[11]/a"):
#選B類課
brower=self.brower
brower.get("http://eams.uestc.edu.cn/eams/stdElectCourse!defaultPage.action?electionProfile.id=1138")
try:
brower.switch_to_alert().accept()
except:
pass
xk=brower.find_element_by_xpath(xpath)
xk.click()
brower.switch_to_alert().accept()
time.sleep(1)
if __name__ == '__main__':
username='201466666666'
pwd='66666'
xk =CourseSelect()
xk.loginToSelectCource(username,pwd)
coursePath="//*[@id=\"lesson303459\"]/td[11]/a"
while True:
xk.selectB(coursePath)
time.sleep(3)
上面的代碼預設選2017年秋季的“素描”課,ok,運作起來,美滋滋!