美文网首页Pythoner集中营
Python学习日志2:两个uiautomator性能提升技巧

Python学习日志2:两个uiautomator性能提升技巧

作者: 郭百度 | 来源:发表于2018-03-30 15:30 被阅读356次

    最近在给自己的AGI助理写眼睛,开头用requests库,后来发现很多信息是加密的,在引入图形识别和OCR之前,为了便捷处理用了uiautomator https://github.com/xiaocong/uiautomator,发现了几个问题
    开头尝试用

    try:
       d('过滤条件').info
    expect:
      print('未找到对应控件')
    

    的方式来监听是否在锁屏界面,后来发现这个代码执行效率非常之低。
    无意中发现使用

    if d('过滤条件').count==0:
      print('未找到对应控件')
    

    的方法,说明count比info效率更高。

    另一个性能问题是官方文档带来的:

    # get the count of views with text "Add new" on current screen
    d(text="Add new").count
    
    # same as count property
    len(d(text="Add new"))
    
    # get the instance via index
    d(text="Add new")[0]
    d(text="Add new")[1]
    ...
    
    # iterator
    for view in d(text="Add new"):
        view.info  # ...
    

    其中提到的 for view in d()的方式性能极其低下,似乎每取一个元素都耗费一次I/O,基本一个清单读取都要25-37秒的等待,在发现这个问题后,使用dump()出xml文本,进而逐行进行xml解析,一个list不到1秒就解析完成

    def xmlKeyword(file,textBefore,textBehind):
        eList=''
        f=open(file)
        for line in f:
            beginNum = line.find(textBefore) + len(textBefore)
            endNum = line.find(textBehind, beginNum)
            result = line[beginNum:endNum]
            #过滤条件1,找到末尾元素endNum为-1
            if endNum == -1:
                result=''
            #过滤条件2,包含文字行过滤,等同文字行过滤
            if '包含文字过滤' in result or result=='等同文字1' or result=='相同文字2':
                result=''
                print(result)
            if result != '':
                eList=eList + result + '\n'
        f.close()
        return eList
    

    中途还尝试了使用uiautomator2,后来由于端口调试问题,需要用到python2.7,最后放弃了这个性能更好的库。
    虽然mac里自带了2.x版本的python,但由于之前写过一段时间混编,而且使用配套的视图软件会导致android SDK自带的uiautomatorViewer连接不上手机,还是更换使用uiautomator。

    等工具运作起来下一阶段就是在工具的框架上替换升级模块,比如视觉部分可以从ID等升级到图形识别,手和大脑可以考虑升级自我学习,自我编辑验证脚本,能自己写自己代码的AI才是好AI。

    关于进展,目前的助理已经可以帮我完成各应用市场联想词的收集,类似市面上ASO100的数据,但由于是助理定制,接下来要写分析和决策模块,目的是解放互联网运营天天盯数据分析数据带来的重复劳动枷锁。

    前期还是重决策,希望快速进入决策模块编写,至少为该工具化形态写1000条以上的决策,分析提炼后进入自动化阶段,完成后再抽象思维真正进入AGI阶段。

    AGI:让人类更专注

    相关文章

      网友评论

        本文标题:Python学习日志2:两个uiautomator性能提升技巧

        本文链接:https://www.haomeiwen.com/subject/fjjicftx.html