• 聊聊 Airtest 自动化工具



    阅读文本大概需要 5 分钟。


    很多读者看过之前的文章,发现我使用最多的是一款 Airtest 的自动化测试框架。

    Airtest 是一款适合于游戏和 App 的 UI 自动化测试框架。


    下面对 Airtest 在平时自动化和爬虫过程中的常见问题做一个汇总。



    1、优势

    Airtest 上手难易度低,高效方便,结合 Python 脚本,可以完成一些自动化的操作,也可以快速开发出一款 App 端的爬虫。


    2、AirtestIDE 还是 Pycharm


    如果只是简单的一些操作,可以使用官网提供的 AirtestIDE,通过简单的拖拽、按压、点击就能完成脚本录制和回放操作。

    640?wx_fmt=jpeg

    当然,想完成一些复杂的操作,就需要在 Python 虚拟环境下安装 pocoui 依赖库,然后借助 Pycharm 编写 Python 脚本来完成。


    3、Airtest 结合 Python 操作

    只需要在 Python 虚拟环境下安装 pocoui 依赖库。

    pip3 install pocoui

    4、有线连接和无线连接


    利用 Airtest 驱动手机完成自动化操作,有两种方式:有线连接、无线连接。


    有线连接:手机通过数据线连接 PC,确保使用 adb devices 命令能找到设备。

    然后,通过下面的 Python 代码即可以完成连接操作。

    # 通过有线连接 PC 端和手机
    self.poco = AndroidUiautomationPoco(screenshot_each_action=False)
    auto_setup(__file__)

    无线连接:保证手机和 PC 在同一个网段,使用 adb 启动手机端的 adb 端口,然后使用下面的 Python 代码完成连接操作。

    # 通过 adb 命令开启手机端的 adb 端口
    adb tcpip 6666

    # 通过 Python,无线连接 PC 和手机
    device = connect_device('android:///192.168.1.166:6666?cap_method=javacap&touch_method=adb')

    poco = AndroidUiautomationPoco(device_1, screenshot_each_action=False)

    auto_setup(__file__)


    5、常用操作


    只需要通过 Android SDK 中的 Monitor 工具识别到元素 ID 或者文本,然后借助 Poco 依赖库完成常见的操作。

    常用手势操作包含:点击、长按、滑动。

    # 点击1
    poco(元素ID).click()

    # 点击2
    poco(text=u'元素文本内容').click()

    # 长按
    poco(元素ID或者元素文本).long_click(长按的时长)

    # 滑动到下一页
    poco.swipe([起始坐标x轴, 起始坐标y轴], [终点坐标x轴, 终点坐标y轴], duration=滑动时长)

    poco.swipe([0.50.8], [0.50.3], duration=1)

    # 滑动到上一页
    poco.swipe([0.50.3], [0.50.8], duration=1)

    pocoui 已经封装了页面的常用操作,包含:回到桌面、模拟手机返回键、锁屏键、截屏、卸载、打开应用等操作。

    # pocoui 封装的一些方法

    # 打开应用
    def start_app(package, activity=None):

    # 停止应用
    def stop_app(package):

    # 截屏
    def snapshot(filename=None, msg=""):

    # 回到桌面
    def home():

    # 模拟按键操作
    # 模拟页面返回操作
    keyevent('BACK')


    6、异常处理


    由于 Airtest 是一款 UI 测试框架,对可见的元素能通过元素 ID 或者文本内容拿到元素,处理列表的时候,滑动的时候经常会导致元素异常,这里要做好异常处理。

    # 处理列表元素
    try:
         self.__handle_good_list()
    except:
         pass


    7、元素获取不到


    借助 Android SDK 中的 Monitor 查看元素属性,会发现有些元素没有 ID 和文本,这时候可以查看 UI 树的结构,找到一个可以确定的元素,通过父子关系拿到这个元素。


    8、点击无效


    有的时候,通过 pocoui 拿到元素对象,但是点击没有效果。

    这种情况,可以通过反复点击,直达某个元素出现来解决这个问题。


    # 点击搜索按钮
    while True:
         # 等待检索结果列表出现
         if not self.poco(元素ID).exists():
              # 再次点击
              perform_click(self.poco(元素ID, text='搜索'))
         else:
              break


    THANDKS
    - End -

    - To Be Continued -



    欢迎关注公众号:测试开发社区
    640?wx_fmt=jpeg
    微信扫描二维码,关注我的公众号

  • 相关阅读:
    CopyOnWriteArrayList
    Gradle version 2.2 is required. Current version is 2.10
    install mysql on ubuntu
    A<T extends B> and A <? extends B>
    java event listeners and dispatcher
    git
    linux patch usage
    Codeforces Round #404 (Div. 2) C 二分查找
    dijkstra算法模板及其用法
    Sublime Text 3 快捷键精华版
  • 原文地址:https://www.cnblogs.com/finer/p/11894999.html
Copyright © 2020-2023  润新知