用python selenium实现一个简单的考试系统的自动做题
生活随笔
收集整理的這篇文章主要介紹了
用python selenium实现一个简单的考试系统的自动做题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
xuefa考試,很實用的東西,不需要廢話,直接上代碼:
# encoding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import os import pytesseract from PIL import Image import time import reglobal drivermbl = 12345678901def init(mobile=15766993867,password = "xfks1234",robot=True):#driver = webdriver.Ie()#driver = webdriver.Firefox()global driverdriver = webdriver.Chrome()driver.get("http://xfks-study.gdsf.gov.cn/study/login")wb_name = driver.find_element_by_name("mobile")wb_name.clear()wb_name.send_keys(str(mobile))wb_password = driver.find_element_by_name("password")wb_password.clear()wb_password.send_keys(password)while robot:try: captcha = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.captcha')))captcha.click()time.sleep(0.1)driver.save_screenshot("screenshot.png") # 對整個瀏覽器頁面進行截圖left = captcha.location['x']top = captcha.location['y']right = captcha.location['x'] + captcha.size['width']bottom = captcha.location['y'] + captcha.size['height']im = Image.open('screenshot.png')im = im.crop((left+200, top+100, right+200, bottom+100)) # 對瀏覽器截圖進行裁剪im.save("captcha.png")image = Image.open('captcha.png')#image.show()content = pytesseract.image_to_string(image, config='digits')print(content)bicinput = driver.find_element_by_name("captcha")bicinput.clear()bicinput.send_keys(str(content))driver.find_element_by_name("submit").click()except:breakwhile True:try:driver.find_element_by_class_name("film_focus_nav")breakexcept:passdef __left_targets():global driverreturn driver.find_element_by_class_name("film_focus_nav").find_elements_by_tag_name("li")def __right_targets():global driverreturn driver.find_element_by_class_name("film_focus_imgs_wrap").find_element_by_class_name("film_focus_imgs").find_elements_by_tag_name("li")def lookall():global driverleft_lens = len(__left_targets())#for i in range(left_lens-1,0,-1):for i in range(0,left_lens):driver.get("http://xfks-study.gdsf.gov.cn/study/index")js = "$('html').animate({ scrollTop: '+=500' }, 100);"driver.execute_script(js)time.sleep(0.5)__left_targets()[i].click()time.sleep(1)right_lens = len(__right_targets()[i].find_elements_by_tag_name("h3"))print("正在看" + __left_targets()[i].find_element_by_tag_name("b").get_attribute("innerHTML")+",共"+str(right_lens)+"個模塊--")#print(right_lens)for j in range(right_lens):driver.get("http://xfks-study.gdsf.gov.cn/study/index")while True:try:driver.find_element_by_class_name("film_focus_nav")breakexcept:time.sleep(0.5)print("正在看第"+ str(j+1) + "模塊:" + __right_targets()[i].find_elements_by_tag_name("h3")[j].find_element_by_tag_name("a").get_attribute("innerHTML")+"----")driver.get( __right_targets()[i].find_elements_by_tag_name("h3")[j].find_element_by_tag_name("a").get_attribute("href"))while True:try:driver.find_elements_by_class_name("chapter")[0].find_elements_by_tag_name("a")breakexcept:time.sleep(0.5)looklens = len(driver.find_elements_by_class_name("chapter")[0].find_elements_by_tag_name("a"))print(u"共"+ str(looklens-1) + "篇內容----")for k in range(1,looklens):xuefen = driver.find_elements_by_class_name("chapter")[0].find_elements_by_class_name("sub_title")[k].get_attribute("innerHTML")if bool(re.search(r'\d', xuefen)):print("第" + str(k) + "篇內容:\"" + driver.find_elements_by_class_name("chapter")[0].find_elements_by_tag_name("a")[k].find_element_by_tag_name("div").get_attribute("innerHTML") + "\"已學習,跳過------")else:print("開始學習第" + str(k) + "篇內容:\"" + driver.find_elements_by_class_name("chapter")[0].find_elements_by_tag_name("a")[k].find_element_by_tag_name("div").get_attribute("innerHTML")+ "\"------")record_url = driver.current_url;driver.get(driver.find_elements_by_class_name("chapter")[0].find_elements_by_tag_name("a")[k].get_attribute("href"))js = "$('html').animate({ scrollTop: '+=5000' }, 10500);"driver.execute_script(js)time.sleep(10.5)driver.get(record_url)time.sleep(1)print("第" + str(k) + "篇內容:\"" + driver.find_elements_by_class_name("chapter")[0].find_elements_by_tag_name("a")[k].find_element_by_tag_name("div").get_attribute("innerHTML") + "\"學習完畢------") print(u"!!!所有內容觀看完畢!!!")return Truedef exerciseall():global driveranswer = [{"title":"憲法","index":10626,"answer":"A,B,A,C,B,B,D,C,D,D,ABCD,ABC,ABCD,ACD,ABC,N,Y,Y,N,Y",},{"title":"依法治國","index":11112,"answer":"A,C,C,B,A,A,B,D,A,A,AB,ABCD,BCD,ABCD,ABCDE,N,Y,Y,Y,Y",},{"title":"國家安全一","index":11106,"answer":"D,B,D,A,D,B,C,B,A,A",},{"title":"國家安全二","index":11107,"answer":"A,A,C,C,B,D,D,C,B,B",},{"title":"國家安全三","index":11109,"answer":"C,C,B,C,D,B,C,D,A,A",},{"title":"掃黑除惡","index":10635,"answer":"A,B,B,B,B,ABCD,ABC,Y,Y,Y",},{"title":"扶貧攻堅","index":10692,"answer":"B,B,C,C,B,AB,ABCD,N,N,Y",},{"title":"法治化營商環境","index":10683,"answer":"Y,N,Y,A,A,C,A,D,ABCD,ABC",},{"title":"知識產權","index":10644,"answer":"B,D,A,B,B,ABCD,ABC,N,N,N",},{"title":"環境保護","index":10663,"answer":"C,B,C,D,B,A,C,A,A,D",},{"title":"黨章黨規黨紀","index":10738,"answer":"Y,Y,N,Y,Y,A,A,C,B,A,C,B,C,C,D,BCD,ABD,AD,ABC,ABCD",},{"title":"黨內法規制定條例","index":11113,"answer":"B,A,D,B,A,ABCD,ABCD,Y,Y,N",},{"title":"紀律處分","index":11114,"answer":"B,A,D,C,C,BC,ABCD,Y,Y,N",},{"title":"廉潔自律","index":11115,"answer":"A,C,B,B,B,ABC,ABCD,Y,Y,Y",},{"title":"十九屆四中","index":11116,"answer":"A,A,D,B,C,A,A,A,B,C,BCD,ABC,ABCD,BCD,ABCD,Y,N,N,Y,Y",},{"title":"傳染病防治","index":11111,"answer":"D,A,C,D,D,B,D,B,A,D,AB,BC,ABCDE,ABCDE,ABCDE,Y,N,N,Y,N",},{"title":"衛生應急","index":11123,"answer":"A,B,D,C,D,B,A,A,C,A,ABCD,ABCDE,CD,ABCD,BCD,Y,N,Y,Y,Y",},{"title":"矯正法","index":11119,"answer":"B,B,D,B,D,A,D,C,C,A,ABCD,ACD,CD,ABCD,ABCD,Y,N,Y,N,N",},{"title":"民法一","index":11165,"answer":"C,C,D,A,B,D,B,C,A,C,ABCDE,ABCD,ABC,N,Y,N,Y,Y,Y,Y",},{"title":"民法二","index":11166,"answer":"A,C,C,B,C,A,B,B,A,B,ABCD,CD,ABC,BCD,ABC,N,N,Y,Y,Y",},{"title":"民法三","index":11167,"answer":"A,D,D,D,D,B,C,A,D,B,ABC,ABCDE,N,Y,N,N,Y,Y,N,N",},{"title":"司法行政系統一","index":10565,"answer":"B,B,B,D,A, A,C,D,A,D, E,B,C,B,C, ABC,ABC,ABCDE,AD,ABCDE, ABCD,ABCD,ABCD,ABCDE,ABCDE",},{"title":"司法行政系統二","index":10566,"answer":"B,A,C,D,B, B,A,A,B,B, B,A,D,D,C, ABCD,ABCD,ABCDEF,ABCDE,ABD, ABC,ABCDE,ABCD,ABC,ABC",},{"title":"司法行政系統三","index":10567,"answer":"A,B,D,C,A, C,D,A,D,C, A,C,C,C,C, A,ABCD,ABC,BCD,BD, AD,ABC,ABCD,ABCD,ABCD",},{"title":"司法行政系統四","index":10568,"answer":"B,D,C,C,D, A,C,B,D,A, A,D,A,B,B, A,ABCD,ABCD,ABCD,ABCD, ABCD,ABCD,ABCDE,ABC,ABCD",}]def g(groupj,targets):if groupj == "A" or groupj == "Y":targets[0].click()elif groupj == "B" or groupj == "N":targets[1].click()elif groupj == "C":targets[2].click()elif groupj == "D":targets[3].click()elif groupj == "E":targets[4].click()elif groupj == "F":targets[5].click()else:groupjS = list(groupj)for k in groupjS:g(k,targets)driver.get("http://xfks-study.gdsf.gov.cn/study/index")left_lens = len(__left_targets())for i in range(0,left_lens):driver.get("http://xfks-study.gdsf.gov.cn/study/index")js = "$('html').animate({ scrollTop: '+=500' }, 100);"driver.execute_script(js)time.sleep(0.5)__left_targets()[i].click()time.sleep(1)right_lens = len(__right_targets()[i].find_elements_by_tag_name("h3"))print("正在檢查" + __left_targets()[i].find_element_by_tag_name("b").get_attribute("innerHTML")+",共"+str(right_lens)+"個模塊--")#print(right_lens)for j in range(0,right_lens):driver.get("http://xfks-study.gdsf.gov.cn/study/index")while True:try:driver.find_element_by_class_name("film_focus_nav")breakexcept:time.sleep(0.5)print("正在檢查第"+ str(j+1) + "模塊:" + __right_targets()[i].find_elements_by_tag_name("h3")[j].find_element_by_tag_name("a").get_attribute("innerHTML")+"----")driver.get( __right_targets()[i].find_elements_by_tag_name("h3")[j].find_element_by_tag_name("a").get_attribute("href"))while True:try:driver.find_elements_by_class_name("chapter")[0].find_elements_by_tag_name("a")breakexcept:time.sleep(0.5)try:exerciselens = len(driver.find_elements_by_class_name("chapter")[2].find_elements_by_tag_name("a"))print(u"共"+ str(exerciselens-1) + "個習題----")except:print(u"該模塊沒有習題,跳過----")continuefor k in range(1,exerciselens):xuefen = driver.find_elements_by_class_name("chapter")[2].find_elements_by_class_name("sub_title")[k].get_attribute("innerHTML")if bool(re.search(r'\d', xuefen)):print("第" + str(k) + "個習題:\"" + driver.find_elements_by_class_name("chapter")[2].find_elements_by_tag_name("a")[k].find_element_by_tag_name("div").get_attribute("innerHTML") + "\"已學習,跳過------")else:print("開始做第" + str(k) + "個習題:\"" + driver.find_elements_by_class_name("chapter")[2].find_elements_by_tag_name("a")[k].find_element_by_tag_name("div").get_attribute("innerHTML")+ "\"------")record_url = driver.current_url#driver.get(driver.find_elements_by_class_name("chapter")[2].find_elements_by_tag_name("a")[k].get_attribute("href")) onclick = driver.find_elements_by_class_name("chapter")[2].find_elements_by_tag_name("a")[k].get_attribute("onclick")targetindex = len(answer)for m in range(0,len(answer)):if str(answer[m]["index"]) in onclick:targetindex = mbreakif targetindex < len(answer):driver.find_elements_by_class_name("chapter")[2].find_elements_by_tag_name("a")[k].click() #jumptime.sleep(1)group = answer[targetindex]["answer"].split(",")for n in range(0,len(group)):targets = driver.find_element_by_id("resource").find_elements_by_class_name("item")[n].find_elements_by_tag_name("input")g(group[n].strip(",").strip(" ").strip(),targets)current_window_handle = driver.current_window_handledriver.find_element_by_id("JiaoJuan-test").click()while True:try:dialog_box = driver.switch_to_alert()time.sleep(1.5)dialog_box.accept() breakexcept:time.sleep(1)while True:try:ok = driver.switch_to_alert()time.sleep(1.5)ok.accept() breakexcept:time.sleep(1)while True:try:driver.switch_to_window(current_window_handle)time.sleep(1.5)driver.back()breakexcept:time.sleep(1)while True:try:dialog_box = driver.switch_to_alert()time.sleep(1.5)dialog_box.accept()breakexcept:time.sleep(1)driver.switch_to_window(current_window_handle)driver.get("http://xfks-study.gdsf.gov.cn/study/index")print(u"!!!所有練習題完成!!!")return Truedef finalexam():global driverdef g(groupj,targets):if groupj == "A" or groupj == "Y":targets[0].click()elif groupj == "B" or groupj == "N":targets[1].click()elif groupj == "C":targets[2].click()elif groupj == "D":targets[3].click()elif groupj == "E":targets[4].click()elif groupj == "F":targets[5].click()else:groupjS = list(groupj)for k in groupjS:g(k,targets)driver.get("http://xfks-study.gdsf.gov.cn/study/index")driver.find_element_by_class_name("textCenter").find_element_by_tag_name("a").click()#time.sleep(1)answer = [{"title":" 將“構建人類命運共同體”寫入我國憲法的是","index":14956,"answer":"D,A,C,C,B,B,C,D,B,A,B,C,A,B,A,C,B,D,B,A, ACD,BC,ABCD,ABCD,ABC, BC,ABCD,BCD,CD,ABCDE, N,Y,Y,N,Y, N,N,Y,N,N",},{"title":"中國共產黨廉潔自律準則》堅持正面倡導","index":14822,"answer":"B,A,B,D,D,B,B,B,A,A,C,C,C,D,A,D,C,A,A,B, ABC,ABC,ABCD,CD,ACD, BCD,AB,ABCDE,ABCD,ABCD, Y,Y,Y,N,Y, Y,Y,N,N,Y",},{"title":"現代國家的結構形式主要包括哪些","index":15037,"answer":"A,D,D,A,A, C,D,A,C,B, D,C,A,D,B, B,D,C,C,B, ABC,ABCD,ABD,CD,ABCDE, ABC,ABCD,ABCD,ABCD,AD, Y,Y,Y,Y,Y, Y,N,Y,N,N",}]tars = driver.find_elements_by_class_name("get3")get3len = len(tars)for i in range(0,get3len):#href = driver.find_elements_by_class_name("get3")[i].find_element_by_tag_name("a").get_attribute("href") driver.find_elements_by_class_name("get3")[i].find_element_by_tag_name("a").click() #jumptime.sleep(1)try:if "已交卷" in driver.find_element_by_tag_name("h2").get_attribute("innerHTML"):print(u"第"+str(i+1)+"場考試已完成,跳過...")driver.back()continueexcept:print(u"正在完成第"+str(i+1)+"場考試...")question_title_index = driver.find_element_by_class_name("question-title").get_attribute("innerHTML")targetindex = len(answer)for m in range(0,len(answer)):if str(answer[m]["title"]) in question_title_index:targetindex = mbreakgroup = answer[targetindex]["answer"].split(",")for n in range(0,len(group)):targets = driver.find_element_by_id("resource").find_elements_by_class_name("item")[n].find_elements_by_tag_name("input")g(group[n].strip(",").strip(" ").strip(),targets)current_window_handle = driver.current_window_handledriver.find_element_by_id("JiaoJuan-exam").click()while True:try:dialog_box = driver.switch_to_alert()time.sleep(1.5)dialog_box.accept() breakexcept:time.sleep(1)while True:try:ok = driver.switch_to_alert()time.sleep(1.5)ok.accept() breakexcept:time.sleep(1)while True:try:driver.switch_to_window(current_window_handle)time.sleep(1.5)driver.back()breakexcept:time.sleep(1)while True:try:dialog_box = driver.switch_to_alert()time.sleep(1.5)dialog_box.accept()breakexcept:time.sleep(1)driver.switch_to_window(current_window_handle)driver.get("http://xfks-study.gdsf.gov.cn/study/exam")while True:#mobile = input("please input your phone number:")#init(robot=True,mobile=12345678901)init(robot=True,mobile=mbl)lookall()exerciseall() finalexam()print(u"該賬號全部完成!")#driver.quit()time.sleep(1000)# for i in range(0,len(all)): # print(u"正在操作賬號:"+ str(all[i])) # init(robot=True,mobile=all[i]) # finalexam() # print(u"剩余個數:"+ str(len(all)-i-1)) # driver.close() # print(u"賬號:"+ str(all[i]) + "操作完畢")?
總結
以上是生活随笔為你收集整理的用python selenium实现一个简单的考试系统的自动做题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用javascript制作随机汉字打字练
- 下一篇: 转载:k2pdfopt详细教程-让kin