前言
学校要求在实验室安全考试系统上学习实验室安全相关的知识,然后完成一个考试。我就想着借这个机会把python selenium自动化测试模块的知识再学一下以前只稍微用过那么一两下,反正就是乱搞嘛,学习这么枯燥当然要自己找点乐子了。完成了一个自动答题的一个脚本,输入自己的学号和密码,程序就会自动答题,最后结果应该是满分,仅此记录一下学习过程,不是为了答题才写的,实验室安全还是要好好了解一下的😄,具体代码如下
代码
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
from lxml import etree import requests from selenium import webdriver import re def getQuestionBank():
url="http://aqks.neu.edu.cn/" response=requests.get(url) page_source=response.text tree=etree.HTML(page_source) arr=tree.xpath('//*[@class="shiti"]/strong') def search_answer(answer_source,question):
question=question.replace('?','\\?') question=question.replace('(','\\(') question=question.replace(')','\\)') s=question+'.*?你未作答标准答案:(.{1,2}?)</div>' pattern=re.compile(s) answer=re.findall(pattern,answer_source) return answer if __name__=='__main__': while(1): print("****************************欢迎来到实验室安全考试系统,本程序是自动答题脚本,祝您玩的愉快!!!*************************") username=input('请输入学号:') password=input('请输入密码:') dr=webdriver.Chrome() dr.get("http://aqks.neu.edu.cn/") dr.find_element_by_id('u1').send_keys(username) dr.find_element_by_id('password').send_keys(password) dr.find_element_by_xpath('//*[@id="web_login"]/div/form/div[3]/input').click() if dr.current_url=='http://aqks.neu.edu.cn/': print("用户名或密码错误!请重新登录!!!") else: break dr.find_element_by_xpath('/html/body/div[1]/div[2]/ul/li[3]/a').click() while(1): type=input('模拟考试/开始考试(输入1或2):') if type=='1': dr.find_element_by_xpath('//*[@id="article"]/div[4]/div[2]/div/a[1]').click() break elif type=='2': dr.find_element_by_xpath('//*[@id="article"]/div[4]/div[2]/div/a[2]').click() break else: print("输入错误,请重输!!!")
url="http://aqks.neu.edu.cn/redir.php?catalog_id=6&cmd=dajuan_chakan&huihuabh=69338&mode=test" response=requests.get(url) response.encoding='gbk' answer_source=response.text answer_source=re.sub('\s','',answer_source) page=0 while(page<10): page_source=dr.page_source tree=etree.HTML(page_source) question_list=tree.xpath('//h3') for i in range(10): question=question_list[i] question=question.xpath('string(.)')[4:] question=re.sub('\s','',question) answer=search_answer(answer_source,question) if(len(answer)==0): print("第"+str(10*page+i+1)+"题未搜索到答案!") print("问题是:"+question) continue answer=answer[0] id='ti_'+str(10*page+i+1) if answer=='错误' or answer=='A': id=id+'_0' elif answer=='正确' or answer=='B': id=id+'_1' elif answer=='C': id=id+'_2' elif answer=='D': id=id+'_3' else: print("搜索答案失败!!!") continue dr.find_element_by_id(id).click() if page==0: path='//*[@id="dati"]/div[11]/input[1]' else: path='//*[@id="dati"]/div[11]/input[2]' dr.find_element_by_xpath(path).click() page=page+1 for i in range(10): pass
|
结果
程序运行过程中会调出chrome浏览器,可以看到程序自动答题过程,答题结束会询问是否提交需要手动确定提交,另外需要用到一个Chrome浏览器驱动程序需要和自己的chrome浏览器版本匹配,点我下载,下载后要配置环境变量或者直接放到已经在环境变量里的目录中。如果没有python环境用我打包好的exe程序,点击下载,不需要python环境就可运行,不过还是需要下载上面chrome浏览器驱动😎
下面这张图是程序自动答题提交后的结果,满分。。。因为已经答过题了所以是用模拟考试测试的🙂
下面是程序自动答题的运行过程,插入视频的dplayer插件也整了好久不过还好成功了😝,浏览器播放不了MP4,需要使用格式工厂把mp4格式视频的编码转换成H264编码。。。
仅此记录一下,以后如果有其他类似的需求可以参考一下,比如网课答题??😂