• Airtest手机APP自动化操作微信


    感觉Appium太垃圾了,于是顺手学了下Airtest

    1. 安装并解压
      官网,有很显眼的下载按钮
      下载完zip文件后进行解压

    2. 启动自带AirtestIDE.exe
      在这里插入图片描述
      不想登录的可以跳过
      在这里插入图片描述
      因为提前通过数据线连接了手机和电脑了,所以一进去就显示已经连接到手机设备了
      当然启动完再用USB线连上也是没问题的
      在这里插入图片描述
      如果是之后插上手机的话,记得刷新
      在这里插入图片描述
      双击这个框,会开始连接,等待几秒出现手机界面,与真机是同步的
      在这里插入图片描述
      在这里插入图片描述
      对于某些手机,例如小米,在第一次使用Airtest时,请注意手机上将会弹出提示,询问你是否允许安装App,此时需要点击允许按钮。

    3. 打开微信

      # -*- encoding=utf8 -*-
      __author__ = "lyy"
      
      from airtest.core.api import *
      
      auto_setup(__file__)
      start_app("com.tencent.mm")
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      在这里插入图片描述

    4. 定位
      在这里插入图片描述
      选完android会弹出这玩意,点yes,手机上也同意安装该应用
      在这里插入图片描述
      点完上面那个小标志后,光标移到那个手机界面上,就有组件详情了
      在这里插入图片描述

      在这里插入图片描述
      所以点击红点就写好了

      poco(name="com.tencent.mm:id/kmv").click()
      
      • 1
    5. 在pycharm中运行这段代码
      安装相关依赖,东西有点多,要等一会
      pip install pocoui -i https://pypi.tuna.tsinghua.edu.cn/simple
      然后就可以直接把AirtestIDE里的代码直接粘贴过去了
      但是代码运行起来又要下东西,能咋办,下呗。。。

    6. 成果

      # -*- encoding=utf8 -*-
      __author__ = "lyy"
      
      from airtest.core.api import *
      from poco.drivers.android.uiautomation import AndroidUiautomationPoco
      import datetime
      
      poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
      
      def response(text):
          if text == "现在什么时候了":
              return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
          elif text == "感觉Airtest怎么样":
              return "只要安装exe就可以使用,很舒适,迁移到python上也只要pip装对应的包。速度也较快,但是IDE和接口的bug挺多,输入文本的API做的不太好,而且网上相关博客很少,社区不活跃"
          elif text == "你这个脚本的效果是什么":
              return "检测微信主页的可视范围内(不下滑时)的所有有未读信息的好友,判断他们的文本并进行回复"
          elif text == "你是谁":
              return "刘宇阳"
          elif text == "为什么能回复自己发的消息":
              return "因为左右两边的聊天框是同一类组件,区分起来有点麻烦;不区分也方便自己测试"
          else:
              return None
      
      
      if __name__ == '__main__':
          auto_setup(__file__)
          # 启动微信
          start_app("com.tencent.mm")
          print("开始监听")
          while True:
          	# 有带红点的未读新消息
              if poco(name="com.tencent.mm:id/kmv").exists():
                  # 点击第一个红点
                  poco(name="com.tencent.mm:id/kmv").click()
                  # 查看聊天界面是否有消息
                  if poco(name="com.tencent.mm:id/b4b").exists():
                      # 获得最新消息
                      target_msg = poco(name="com.tencent.mm:id/b4b")[-1].get_text()
                      resp = response(target_msg)
                      if resp != None:
                          # 输入内容
                          poco(resourceId="com.tencent.mm:id/kii").click()
                          # 使用Airtest的专用输入法Yosemite
                          # 异常捕获解决第一次打开Yosemite输入法报错
                          try:
                              text(resp, enter=False)
                          except:
                              text(resp, enter=False)
                          # 点击发送
                          poco(resourceId="com.tencent.mm:id/b8k").click()
                      # 点击返回到主页
                      poco(resourceId="com.tencent.mm:id/yn").click()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
  • 相关阅读:
    工业物联网:基于数字孪生的车间物流与制造智能同步制造系统
    postman断言详解
    mybatis原理及整合spring原理
    “出海”掘金,程序员为何要奔赴新的战场?
    (十三)【Jmeter】线程(Threads(Users))之tearDown 线程组
    EDI对接 New York & Company案例
    什么是DCMM模型数据管理能力成熟度评估
    GJB 5000B简介
    软加密真的安全吗?
    前端逆向之下载canvas引用的图片
  • 原文地址:https://blog.csdn.net/qq_51955445/article/details/128088134