app_auto
- app自动化,本代码是在真机上进行测试,测试的学习强国app和快手极速版。注意在测试前先登录app,并保证从桌面进入app时能在主页面,因为本代码没有进行模拟登录。
- 学习强国除答题和订阅部分,其余分值均可获得。
- 供自己使用,只适配了本机的屏幕大小,其它手机一般需要调整部分代码(已经标出)。
- "*"号表示仅作了解。
配置
- 安装anoconda或只安装python(添加到系统环境),安装uiautomator2和weditor两个python包
- 安装Android Studio,也可以只安装SDK Platform Tools然后配置系统环境。cmd中输入adb不出错即可
初始化(cmd中操作)
- usb连接手机(开发模式)后,输入adb devices查看是否连接上,连接上可获取手机名字
- 连接手机后,输入python -m uiautomator2 init对手机进行初始化(这一步不是必要的)
- 输入python -m weditor打开网页,输入(1)中获取的手机名进行连接,然后可逐步调试,可视化界面做得非常好。
auto.py)
Python程序(学习强国移动应用程序,文章和视频阅读(共24分)以及最后5分。代码包括一个函数和一个类。代码运行全程大约32分钟,可获得29-30分(余下答题和订阅部分)。
rand()
函数。在手机运行过程中,暂停(time.sleep()
)非常重要,rand()
是为了让暂停时间长短稍显不同而设计(^-^其实就是让软件商更难监测,可能没啥用)。auto_app()
类,包含7个函数
read()
函数:文章阅读方式,首先循环遍历每个文章链接,然后滑动阅读,每次滑动暂停10s左右,每篇阅读110s左右。article()
函数:获取文章链接,在文章格式比较固定以及更新很快的“订阅”里面寻找6篇今天的文章,阅读完当前页面的文章后,下滑再定位今天的文章,再阅读。watch()
函数:看视频方式,先遍历视频链接,每个视频根据是否出现“重新播放”来确定是否放完,对于新闻联播,最多播放450s(time1=45),对于其它较长的视频,最多播放360s(time1=36).video()
函数:获取视频链接,在电视台中的“联播频道”中获取6个昨天的视频,观看后滑屏再观看。mix()
函数:收藏转发评论前两篇文章。back()
函数:返回。local()
函数:进入本地频道
快手短视频移动应用程序,每过10s左右上滑,比较简单。
配置*(仅做了解)
网上也有不少用appium来调试,这里做简单的介绍。
案例:用夜神模拟器打开学习强国(已登录)
- 配置
- 安装jdk,配置环境变量
- 安装anoconda,安装Appium-Python-Client包
- 安装Android Studio,配置环境变量(ANDROID_HOME和Path(...Sdk\platform-tools))
- 安装Appium
- 安装夜神模拟器,并用Android Studio里的adb.exe替换夜神的nox_adb.exe并更名(避免版本不兼容),安装学习强国
- 网上说还要安装node.js,没有安装也能跑,就没安装了
- 连接
- 夜神运行app后,cmd输入adb devices连接获取手机名字
- 打开需要测试的app,cmd输入adb shell dumpsys activity activities | grep mFocusedActivity,获取当前Activity
- 打开appium软件,填写主机地址,端口不变,点击放大镜,配置后可以对app进行调试。配置如下:
{
"platformName": "Android",
"platformVersion": "7.1.2",
"deviceName": "127.0.0.1:62025",
"appPackage": "cn.xuexi.android",
"appActivity": "com.alibaba.android.rimet.biz.home.activity.HomeActivity",
"automationName": "UiAutomator1",
"noReset": "true",
"newCommandTimeout":"600"
}
- noReset表示不要重置,登录后调试app时可以不用再登陆。automationName,网上教程很多没有这一项,但是不加这一项程序会报错,没有找到合适的解决办法,因此加上了(这一项会改变将默认的uiautomator2),newCommandTimeout表示无动作重置时间。下面代码可以启动学习强国
# 需要保持appium服务在运行
from appium import webdriver
caps = {} # (3)中的内容
driver = webdriver.Remote('http://localhost:4723/wd/hub', caps)
# 接下来进行xpath定位,driver.tap点击和driver.swipe滑动