最近有朋友想让帮忙写个*头条的自动阅读文章、看视频刷金币的功能,正好想起来最近一直在用的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方法看看执行结果吧: (同时也可以看看你的手机设备是怎么变化的)

头条自动python登入 怎样设置头条自动阅读_ide

 

 

      写在最后:本篇只作为对之前几篇关于Airtest+Poco的实战演练使用。为防止官方屏蔽,部分代码没有提供。