今年疫情原因,在家上网课,开启了无聊的刷网课模式,不光在学习通上,MOOC上也有一门创新创业。

本来网课刷的好好的开两个页面双倍快乐,一会就可以刷完,可是居然还有测验。关键是测验的题目百度查不到,要么就是恶心的付费解锁。真巧我发现有一款APP基本啥网课答案都有,就打算用这个软件完成各章的测试。可是,这居然没有web网页版所以不能用requests模块批量提交解析。

问题是如果用手机的话,要一题一题复制粘贴,然后不停的切换页面太麻烦啦。所以想着在电脑上用模拟器完成。

那啥看了一眼,要实现上述要求要用到python的Appium-Python-Client模块等等。去学了一波。

学会了我们就开始!

需要的东西:

夜神模拟器、python3(pycharm)、appium、javaSDK、以及AndroidSDK

操作步骤

1、模拟器自行百度下载最新版本我用的夜神模拟器

2、安装java sdk 自行百度记得添加环境变量因为android sdk要依赖 java sdk 环境

安装验证:cmd输入javac如下图所示即安装成功

3、下载Androidsdk建议下镜像版(因为正版要科学上网)并新建环境变量ANDROID_HOME,路径值为SDK文件所在位置

(避坑指南:注意Android adb.exe和模拟器文件夹下的nox_adb.exe以及adb.exe版本要一样可以把Androidsdk adb.exe改个名字直接复制到模拟器里避免版本冲突)

然后添加完路径之后 win+r 输入cmd打开命令行,输入adb如果如下图所示表示安装成功。
接下来打开模拟器,首先打开模拟器设置找到版本号连点7下打开开发者模式并打开USB调试选项
cmd输入指令:adb device,如图表示连接成功。

4、安装appuim (百度百度)

作为python操纵app的接口
附上原理图

5、开始编写代码

我用的是xpath语法批量采集题目到一个txt然后按行对txt的内容进行处理,这只是单纯的前端并不会与服务器交互可以安心享用(抖机灵)

下面直接贴上代码:没学过的建议看一下教程:
教程传送门:点我

from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
import timedesired_caps = {'platformName': 'Android', # 被测手机是安卓'platformVersion': '5', # 手机安卓版本'deviceName': '127.0.0.1:62001', # 设备名,安卓手机可以随意填写'appPackage': 'com.xuexiaoyi.xxy', # 启动APP Package名称'appActivity': '.MainActivity', # 启动Activity名称'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True'resetKeyboard': True, # 执行完程序恢复原来输入法'noReset': True,       # 不要重置App'newCommandTimeout': 6000,'automationName' : 'UiAutomator2',
}# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 设置缺省等待时间
driver.implicitly_wait(15)# 根据content-desc定位搜索输入框,点击
driver.find_element_by_accessibility_id('搜题').click()file = open(r"C:\Users\Administrator\Desktop\imu.txt")
i = 0
for line in file:i = i + 1print(i, '、', line)#加个异常处理try:# 根据classname定位搜索框search = driver.find_elements_by_class_name('android.widget.EditText')[0]search.click()search.send_keys(line)#定义一个滑动屏幕的函数def up_swipe():time.sleep(1)driver.swipe(start_x=48, start_y=535, end_x=48, end_y=100)time.sleep(1)# 根据classname定位立即搜索按键sousuo = driver.find_elements_by_class_name('android.widget.TextView')[6]sousuo.click()up_swipe()time.sleep(1)print('*' * 50)ques = driver.find_elements_by_class_name('android.widget.TextView')[8]print(ques.text)#有的时候题目不一样长所以会多输出两个元素确保我们想要的题目在,无伤大雅觉得不好看的可以写一个替换函数anwser = driver.find_elements_by_class_name('android.widget.TextView')[9]anwser1 = driver.find_elements_by_class_name('android.widget.TextView')[10]anwser2 = driver.find_elements_by_class_name('android.widget.TextView')[11]print(anwser.text,anwser1.text,anwser2.text)print('*' * 50)#滑动回去driver.swipe(start_x=48, start_y=268, end_x=48, end_y=800, duration=800)clear = driver.find_elements_by_class_name('android.widget.TextView')[4]clear.click()time.sleep(1)except:print("本题需要手动搜寻答案")file.close()

滑动的原因是答案的元素在下面,定位不到。所以需要滑动滑动记得加个延时函数避免出错。

然后就可以愉快的刷题啦耶耶耶!(小伙伴也可以把内容输出到一个txt文本中做可持续化这里就不展开了)

用Python+Appium自动写网课考试相关推荐

  1. Python+APPIUM+模拟器实现自动看网课

    Python+APPIUM+模拟器实现自动看网课 本文主要使用Python以及APPUIM编写脚本实现超星APP自动看课的功能.关于APPIUM的配置请看新手入门--APPIUM的环境配置以及连接夜神 ...

  2. Python版自动组卷评卷考试系统,具有考试定时、自动组卷、客观题自动判卷、自动评分和考试界面设计功能

    一.实验项目名称: 自动组卷评卷考试系统 二.实验内容 用Python语言编程实现自动组卷评卷考试系统,软件主要功能包括:从题库中随机抽取试题自动组成试卷(满分100分):实现考生考试答题操作界面:实 ...

  3. Python实现自动写邮件

    Python实现自动写邮件 上星期接到任务要完成一个自动写邮件的脚本,基本功能是每两小时执行一次程序跑出统计表格,并将统计表格的summary发送到领导的邮箱.由于公司是做数字货币的,每两小时实时监测 ...

  4. 根据课表自动打开网课上课平台——Python实现

    前言 自疫情爆发以来啊,对大学牲来讲,上网课已基本成为司空见惯的事情了,在看的各位谁还没上过个网课呢.抛开事实不谈,上网课的效率还是比较高的(手动狗头). 那有些游手好闲,啊不对,是热爱学习的小可爱( ...

  5. 零基础学python比较好的网课-请问自学 Python 有必要买课程吗?

    关于学习python,本仙女有话要说 勤奋自律+觉悟5星,建议自学,如果有一个上进心但缺少自律性,对自己信心不足或觉得自己不够聪明,可以选择培训班: 题主说的是自学,那我就聊一下自学python,众所 ...

  6. 利用代码实现自动刷网课阅读时长功能 JAVA

    目录 前言: 理论依据: 现实依据: 朴素版只能循环阅读不能翻页: 升级版 翻页 + 阅读: 如何使用: 前言: 最近不也快结课了,网课该刷的都要刷掉,最近不就把一门思政课刷完了,课后习题也做了,但是 ...

  7. 【开学导航】新生必备网课/考试作业答案查询攻略分享

    马上进入9月份,各地高校纷纷开启返校季!不过对于大一的新生来说,面对全新的大学生活,心中既期待又迷茫,那身为一个Freshman的你,准备好怎样去迎接最美好的四年时光了吗?下面就让老学姐来给大家分享一 ...

  8. 基于Python的(拍照签到+网课在线检测)深度学习的人脸识别系统

    摘 要 近年来,网络技术日新月异,我们已经进入了大数据的时代并成为其中第一员,由此带来数据量的飞跃式的增长,而如何利用这些数据产生实际的生产价值则成为了大数据时代的一个重要问题.而人脸识别技术是一份对 ...

  9. 基于Python 实现自动组卷评卷考试系统【100010913】

    自动组卷评卷考试系统 实验内容 用Python语言编程实现自动组卷评卷考试系统,软件主要功能包括:从题库中随机抽取试题自动组成试卷(满分100分):实现考生考试答题操作界面:实现自动阅卷评分功能:等等 ...

  10. 大学计算机python答案在哪找_中国大学大学计算机Python算法实践答案网课MOOC考试期末慕课答案...

    [判断题] 如果组件全部自由度被限制,则称完全约束,在图形窗口中看不到约束符号.如果组件有几个自由度没有被限制,则称为欠约束.在装配中,允许欠约束存在. [单选] 男,2岁,出生时正常.3个月后皮肤和 ...

最新文章

  1. 仅用 480 块 GPU 跑出万亿参数!全球首个“低碳版”巨模型 M6 来了
  2. 解决Eclipse狂吃内存的解决方法(转)
  3. 电脑重装系统文件会丢失吗_电脑黑屏,利用重装系统软件,把黑屏电脑里的文件拷出来...
  4. Angular项目中,基于esriLoader+iframe实现不同页面调用3.x与4.x ArcGIS JS API
  5. 【大数据技术】操作系统和Hadoop版本选择
  6. element-ui做背单词的网站
  7. HTTP状态码表格汇总
  8. 解压mysql server_2018-05-09 MySql-server解压缩版安装及配置
  9. 很多人搞不清楚的两个类Vector,ArrayList
  10. rtx客户端绿化方法+组织架构更新延迟的解决方案
  11. vijos一元三次方程求解
  12. 【CAD2021】快捷键/基础操作大全
  13. 软件测试周刊(第24期):最不重要的素质就是智商
  14. 网课答案公众号搭建过程详解
  15. 知乎上的有哪些较好的壁纸网站?
  16. Neo4j Server shutdown initiated by request最简暴的解决办法。
  17. html标签 lt heavy gt,HTML Purifier:转换< body>到< div>
  18. pytorch-YOLOv3移植到寒武纪
  19. PE文件结构与程序装载
  20. 建设一个SaaS平台需要知道什么,做什么

热门文章

  1. 安装rational rose软件详细教程(不用注册账号)
  2. Vue中用到jeDate日期控件,Vue对象中的值滞后,总是滞后当前选择的值
  3. 金字塔原理(Pyramid Principle)
  4. 期刊第8期 | 分享C/C++嵌入式系统编程思想
  5. 微信浏览器ISO系统底部导航栏
  6. c++ mysql中文乱码_c++ poco 使用mysql中文乱码问题
  7. Java坦克大战代码
  8. 计算机组成原理累加器实验a r0,计算机组成原理实验箱 介绍.ppt
  9. UG8.5有限元仿真分析基础到高级视频教程
  10. 录音转换成mp3格式