天天看點

selenium 自動搶課——電子科大自動搶課腳本前言:使用方法:`代碼:

前言:

又到了一學期一度的渣電的退補選,退補選這東西 誰退了誰搶到就是本事,閑着沒事,寫一個自動化搶課腳本。

使用方法:`

  1. 安裝selenium
  2. username改成自已的學号

    pwd改成自已的密碼

  3. coursePath修改成自已想要的課的xpath路徑,得到xpath的方法為

    使用chrome打開選課頁面,找到所選課程,右鍵"檢查",然後再調試界面預設選擇的藍色區域右鍵copy->copy xpath.即可

    如果xpath中間有"或其它特殊符号,在xpath路徑裡面的"前加\

  4. 重新整理不要太頻繁

代碼:

__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,運作起來,美滋滋!