Airtest-Poco项目实战(*头条自动看文章视频)
原创:George555 公众号:测试江湖路
如果这些内容对你有帮助,也可以打开微信扫一扫,加关注:
Airtest-Poco项目实战
-某头条app自动看文章、看视频刷金币
最近有朋友想让帮忙写个*头条的自动阅读文章、看视频刷金币的功能,正好想起来最近一直在用的airtest-poco,完全可以满足,就玩了几天*头条app,找了下规律,就开开心心的撸起了代码,中间过程一言难尽,问题还是比较多的,毕竟是个大平台吗,防刷机制还是有的。
今天就整理代码和方法出来。(正好再过2天国庆节了,提前祝大家节日快乐,此文就当福利送给大家了 O(∩_∩)O哈哈~)
一、环境
python3.6.5
Airtest1.0.27
Poco1.0.77
设备:华为p10
安装方式此处略,可以查看此公众号中其他相关文章
二、实现方式:
1.进入App首页-点击推荐,进行页面刷新
2.查看第一条内容做判断,
A.如果是视频类型点击进入详情,在详情页随机上滑评论区,滑动N次后返回到上页,再次刷新推荐栏目数据
B.如果是图文类型点击进入详情,在详情页根据图片个数进行左滑,随机等待一定时间,滑动结束后返回到上页,再次刷新推荐栏目数据
C.重复A.B即可实现开始说的刷内容攒积分的需求了
三、代码
1.先看虾执行前的初始化方法:
def initApp():
global packageName,uri
connect_device(uri)
poco = AndroidUiautomationPoco(device=device())
start_app(packageName)
sleep(10)
poco.wait_for_any(poco(text='推荐'), timeout=10)
poco(text='推荐').click(sleep_interval=3)
return poco
2.初始化好后,拿到了poco对象,接下来就是去针对性执行图文帖 pictext(poco)还是视频帖video(poco)了。
def main():
poco=initApp()
global executTimes
print("本程序将执行 {} 次 ".format(executTimes))
while executTimes:
print ("开始第 {} 次 执行任务".format(executTimes))
try:
if executTimes>0:
if poco('com.jifen.qukan:id/aip').exists():
video(poco)
elif poco('com.jifen.qukan:id/ais').exists():
pictext(poco)
else:
print("不是图文,也不是视频,返回刷新")
refresh(poco)
executTimes-=1
except Exception as e:
print("出现了错误:{},准备重启后开始下一轮执行".format(e))
stop_app(packageName)
sleep(60)
initApp()
continue
print('全部执行结束,准备关闭APP...')
stop_app(packageName)
if __name__=="__main__":
main()
3.图文帖的执行方法:
def pictext(poco):
'''图文类型处理'''
picNum=poco("com.jifen.qukan:id/ais").get_text()
picNum=int(picNum.strip('图'))
# print("图片个数为:{}".format(picNum))
poco('com.jifen.qukan:id/aio').click(sleep_interval=3)#查看图文详情
for i in range(0,picNum):
print("进入图文详情,开始看第 {} 个图文".format(str(i+1)))
sleep(random.randint(1,5))
poco.swipe([0.9,0.5],[0.1,0.5])
poco('android.widget.ImageView').click(sleep_interval=3)#关闭返回首页
refresh(poco)
4.视频帖的执行方法:
def video(poco): #
'''视频类型处理'''
videoTime=''
if poco("com.jifen.qukan:id/aiq").exists():
videoTime=poco("com.jifen.qukan:id/aiq").get_text()
poco('com.jifen.qukan:id/aip').click(sleep_interval=3) #播放视频
for i in range(0,swipeNums(timeHandle(videoTime))):
print("进入视频详情,开始滑动第 {}次".format(str(i+1)))
sleep(random.randint(1,5))
poco.swipe([0.5,0.7],[0.5,0.5])
poco('com.jifen.qukan:id/rx').click(sleep_interval=3) #返回
refresh(poco)
从上面的实战例子可看出,之前写的几篇文章中poco、airtest中的各种方法都包含在内。
执行下main方法看看执行结果吧: (同时也可以看看你的手机设备是怎么变化的)
写在最后:本篇只作为对之前几篇关于Airtest+Poco的实战演练使用。为防止官方屏蔽,部分代码没有提供。
相关文档查询可以进公众号看这里:
▼往期精彩回顾▼
#####欢迎大家加群交流####
QQ:464314378
微信群请先加群主微信,群主会拉各位小伙伴进群,注意添加备注。