使用python來(lái)實(shí)現(xiàn)自動(dòng)評(píng)分

班級(jí)聊天記錄.png

有這個(gè)想法大概是在一年前竣况,因?yàn)閷W(xué)校的評(píng)測(cè)真的很煩,一共好幾門課,每門課里面大概20多個(gè)選項(xiàng)器钟,手工點(diǎn)真的很麻煩傅联,于是放學(xué)回家就花了大概一個(gè)半小時(shí)去實(shí)現(xiàn)了這個(gè)項(xiàng)目


  • 需要的工具:
  • python
  • chrome以及配套的chrome driver【自行百度配置】
  • selenium模塊

前期思路:

  • 首先打開學(xué)校的網(wǎng)站 分析一下元素:

    登陸.png

    首先一個(gè)賬號(hào)輸入框撇他,一個(gè)密碼框肥印,還有一個(gè)選擇框

    直接用selenium的xpath來(lái)定位這兩個(gè)輸入框 :

    xpath.png

    復(fù)制以后直接copy到方法里面就可以了

接下來(lái)就是選擇框了性锭,當(dāng)時(shí)查了很多資料才知道可以用selenium的select來(lái)對(duì)其進(jìn)行操作
獲取選擇框id以后用select_by_value發(fā)送需要選擇的數(shù)據(jù)

select.png

最后獲取登陸按鈕的xpath模擬點(diǎn)擊就可以了

button'.png

  • 登陸以后我們來(lái)到了進(jìn)入網(wǎng)上評(píng)教的地方

    frame.png

  • 我們可以發(fā)現(xiàn)這是一個(gè)Frame框架孵班,需要先進(jìn)入特定的框架內(nèi)之后再進(jìn)行獲取元素進(jìn)行點(diǎn)擊等操作

  • 進(jìn)入評(píng)測(cè)界面

    image.png

發(fā)現(xiàn)課程的類名主要就是:GridViewRowStyle和GridViewAlternatingRowStyle這兩個(gè)類名生成涉兽,于是想到了用find_emelements_by_class方法來(lái)獲取所有的課程,返回結(jié)果是一個(gè)列表篙程,使用len方法獲取長(zhǎng)度枷畏,數(shù)了一下,發(fā)現(xiàn)和當(dāng)前課程數(shù)不符合虱饿,排查發(fā)現(xiàn)是因?yàn)橄旅孢€有一個(gè)GridViewRowStyle拥诡,于是獲取完畢再-1,就是當(dāng)前學(xué)生的課程數(shù)

接下來(lái)就是點(diǎn)擊鏈接進(jìn)入進(jìn)行評(píng)測(cè)

image.png

觀察發(fā)現(xiàn)氮发,單選框主要就是由id:GridView1_RadioButton1_0 最后一個(gè)數(shù)逐次+1來(lái)命名渴肉,于是用for循環(huán)來(lái)循環(huán)點(diǎn)擊他們最后選擇提交按鈕完成整個(gè)程序,外面的課程也是如此方法爽冕,因?yàn)槔锩孢x擇框條數(shù)是死的 數(shù)過(guò)了只有20條仇祭,課程因?yàn)樾律仙疾灰粯樱垣@取類的總數(shù)來(lái)進(jìn)行循環(huán)

代碼:

#coding:utf8
from selenium import webdriver
import datetime
from selenium.webdriver.support.select import Select
username = raw_input('請(qǐng)輸入你的學(xué)號(hào):') 
pasd = raw_input('請(qǐng)輸入密碼:')
broswer = webdriver.Chrome()
url = 'http://218.4.204.107/'
broswer.get(url)
user = broswer.find_element_by_xpath('//*[@id="TextBox1"]')
passwd = broswer.find_element_by_xpath('//*[@id="TextBox2"]')
user.send_keys(username)
passwd.send_keys(pasd)
border = Select(broswer.find_element_by_id('ddl_role'))
border.select_by_value('學(xué)生')
login = broswer.find_element_by_xpath('//*[@id="submitBtn"]')
login.click()
GetFrame = broswer.switch_to.frame('main')
teacher = broswer.find_element_by_xpath('//*[@id="container"]/div/div[9]/div[1]/a/img')
teacher.click()
getcourse1 = broswer.find_elements_by_class_name('GridViewRowStyle')
getcourse2 = broswer.find_elements_by_class_name('GridViewAlternatingRowStyle')
getcourse1 = len(getcourse1)-1
getcourse2 = len(getcourse2)
courseCount = getcourse1 + getcourse2
echostart = '已經(jīng)獲取完畢總課程數(shù)為%s' % courseCount + '門課'
print echostart
starttime = datetime.datetime.now()
print '腳本正在運(yùn)行中....請(qǐng)不要亂動(dòng)鼠標(biāo)'  
for i in range(0,int(courseCount)):
    S = '//*[@id="GridView1_lbl_cjlr_%s"]/a' % i
    i+=1
    start = broswer.find_element_by_xpath(S)
    start.click()
    for k in range(0,20):
        bID = 'GridView1_RadioButton1_%s' % k
        k+=1
        do = broswer.find_element_by_id(bID)
        do.click()
    post = broswer.find_element_by_xpath('//*[@id="Button2"]')
    post.click()
    alert = broswer.switch_to.alert
    alert.accept()
broswer.close()
print '腳本已經(jīng)執(zhí)行完畢颈畸,請(qǐng)關(guān)閉cmd窗口'
endtime = datetime.datetime.now()
exetime = (endtime - starttime).seconds
counttime = '已經(jīng)完成乌奇,用時(shí)%s' % exetime + 's'
print counttime

整個(gè)過(guò)程比較繁瑣,很多細(xì)節(jié)沒(méi)有說(shuō)出來(lái)眯娱,在這里就當(dāng)個(gè)記錄吧礁苗,以后可算不用手點(diǎn)了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市困乒,隨后出現(xiàn)的幾起案子寂屏,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迁霎,死亡現(xiàn)場(chǎng)離奇詭異吱抚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)考廉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門秘豹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人昌粤,你說(shuō)我怎么就攤上這事既绕。” “怎么了涮坐?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵凄贩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我袱讹,道長(zhǎng)疲扎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任捷雕,我火速辦了婚禮椒丧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘救巷。我一直安慰自己壶熏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布浦译。 她就那樣靜靜地躺著棒假,像睡著了一般。 火紅的嫁衣襯著肌膚如雪精盅。 梳的紋絲不亂的頭發(fā)上淆衷,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音渤弛,去河邊找鬼祝拯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛她肯,可吹牛的內(nèi)容都是我干的佳头。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼晴氨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼康嘉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起籽前,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤亭珍,失蹤者是張志新(化名)和其女友劉穎敷钾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肄梨,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阻荒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了众羡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侨赡。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粱侣,靈堂內(nèi)的尸體忽然破棺而出羊壹,到底是詐尸還是另有隱情,我是刑警寧澤齐婴,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布油猫,位于F島的核電站,受9級(jí)特大地震影響柠偶,放射性物質(zhì)發(fā)生泄漏眨攘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一嚣州、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧共螺,春花似錦该肴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至雏蛮,卻和暖如春涎嚼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挑秉。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工法梯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人犀概。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓立哑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親姻灶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铛绰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容