暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

自动化测试的正确姿势-Airtest API详解&Demo演示

程序员杨叔 2023-04-21
354





一、背景




Airtest作为一款优秀的自动化测试工具,有着强大的API功能,处理日常自动化测试过程中需要的各类操作。接着上一篇文章:UI自动化测试的正确姿势-Airtest第二弹, 今天我们继续分享Airtest API详解第二篇,结合自动化测试中的各类需求,看看如何通过使用Airtest来快速实现。





二、text




最常用的操作,在目标设备上输入文本,文本框需要处于激活状态。



参数如下:

  • text – 要输入的文本

  • enter – 是否在输入完毕后,执行一次 Enter操作 ,默认是True

  • search-是否在输入完毕后,执行一次 Seach操作,默认是False

    text("孤勇者", enter=True)
    text("孤勇者", search=True)

    备注:Windows下或移动设备上,如果enter参数或search参数设置了不生效,可以使用keyevent来操作enter、search键,或者通过点击相应的确认、搜索按钮来完成操作。

      # 输入文字:孤勇者
      text("孤勇者")
      # 使用键盘上的回车键
      keyevent("{ENTER}")






      三、keyevent




      常用操作,在设备上执行keyevent按键事件。



      参数:
      keyname – 平台相关的按键名称,参考对应的平台接口文档。

      Android按键:



      直接调用了adb的keyevent(),相当于执行了 adb shell input keyevent KEYNAME

        # 点HOME键
        keyevent("HOME")
        keyevent("3") # 也可以用数值来代表


        # 点BACK键
        # 如果你的脚本要同时兼容Android和iOS,则不要使用,因为iOS不支持
        keyevent("BACK")
        keyevent("4") # 也可以用数值来代表


        # 循环删除输入框内容
        # Airtest没有清空输入框的方法,所以可以模拟真实的手工操作,就是不停的按删除键
        for i in range(20):
        keyevent("KEYCODE_DEL") # 或keyevent("67")


        这里为大家整理了常用的键值,已经比较全了,平时的操作都能覆盖到了:

          keyevent 3     Home
          keyevent 4 Back
          keyevent 66 Enter 回车键
          keyevent 19 DPAD_UP 导航键 向上
          keyevent 20 DPAD_DOWN 导航键 向下
          keyevent 21 DPAD_LEFT 导航键 向左
          keyevent 22 DPAD_RIGHT 导航键 向右
          keyevent 23 DPAD_CENTER 导航键 确定OK键
          keyevent 24 VOLUME_UP 音量增加键
          keyevent 25 VOLUME_DOWN 音量减小键
          keyevent 82 Menu 菜单
          keyevent 5 Call 拨号盘
          keyevent 6 EndCall 挂机键
          keyevent 84 Search 搜索键
          keyevent 27 Camera 拍照键
          keyevent 80 Focus 拍照对焦键
          keyevent 26 Power 电源键
          keyevent 83 Notification 通知键
          keyevent 91 Mute 话筒静音键
          keyevent 164 Volume_Mute 扬声器静音键
          keyevent 92 PAGE_UP 向上翻页键
          keyevent 93 PAGE_DOWN 向下翻页键
          keyevent 67 DEL 退格键
          keyevent 112 FORWARD_DEL 删除键
          keyevent 124 INSERT 插入键
          keyevent 61 TAB Tab键
          keyevent 143 NUM_LOCK 小写键盘锁
          keyevent 115 CAPS_LOCK 大写锁定键
          keyevent 121 BREAK Break/Pause键
          keyevent 116 SCROLL_LOCK 滚动锁定键
          keyevent 168 ZOOM_IN 放大键
          keyevent 169 ZOOM_OUT 放大键
          keyevent 122 MOVE_HOME 光标移动到开始键
          keyevent 123 MOVE_END 光标移动到末尾键


          Windows按键:



          使用Python的第三方库 pywinauto.keyboard 进行按键点击

            # 例如这是Enter键的输入方式,需要加上括号{}:
            keyevent("{ENTER}")


            # 符号^也代表了CTRL键,因此^a即为全选(Ctrl+A):
            keyevent("^a")


            # 符号%也代表了ALT键,因此%{F4}即为ALT+F4:
            keyevent("%{F4}")


            # 符号+也代表了SHIFT键,因此+{INS}即为SHIFT+INSERT, 效果等同于ctrl+v, 粘贴剪切板中的内容到当前位置:
            keyevent("+{INS}")
              # -*- encoding=utf8 -*-__author__ = "yy"
              from airtest.core.api import *
              auto_setup(__file__, devices="Windows:///")
              keyevent("{ENTER}") # 按回车键
              keyevent("^a^c") # 全选并复制
              keyevent("^v") # 粘贴
              keyevent("'%{F4}") # 按ALT+F4

              详细的按键key,参看:https://pywinauto.readthedocs.io/en/latest/code/pywinauto.keyboard.html


              IOS按键:



              IOS封闭性很高,只支持home/volumeUp/volumeDown3个按键:

                keyevent("HOME")
                keyevent("volumeUp")
                keyevent("volumeDown")






                四、snapshot




                对目标设备进行一次截图,并且保存到文件中。常用于自动化测试报错时使用,或者做一些验证结果记录时使用。



                参数:

                • filename – 保存截图的文件名,默认保存路径为 ST.LOG_DIR中

                • msg – 截图文件的简短描述,将会被显示在报告页面中

                • quality – 图片的质量,[1,99]的整数,默认是10

                • max_size –图片的最大尺寸,例如 1200

                  • # 设置截图的质量为90, 图片尺寸不超过 1200*1200
                    snapshot(filename="test2.png", msg="test", quality=90, max_size=1200)


                    # 设置图片的质量为30,全局生效,不用每一次截图都单独设置了
                    ST.SNAPSHOT_QUALITY = 30
                    # 设置图片的尺寸不超过600*600,全局生效,不用每一次截图都单独设置了
                    ST.IMAGE_MAXSIZE = 600





                  五、sleep




                  设置一个等待的时间。通常用于执行一个操作后,下一个页面需要等待几秒才能加载完毕时的测试场景。为了等待下一个页面加载完毕,就需要使用sleep。



                  参数:
                  secs – sleep的时长





                  六、assert_exists




                  验证目标图片在设备屏幕上存在,找不到目标图片则验证不通过,直接报错raise AssertError。通常用于执行某个操作后,验证是否正确出现了期望中的结果。



                  参数:

                  • v – 要验证的目标图片

                  • msg – 描述测试点,将记录在测试报告中





                  六、assert_not_exists




                  验证目标图片在设备屏幕上不存在,与assert_exists相对应,通常用于执行某个操作后,验证页面上不存在目标图片,以此来判断操作是否成功。





                  七、assert_equal/not_equal




                  验证两个值相等或不相等,通常用于测试脚本中做一些逻辑判断时使用,验证不通过则处罚assertion fails。



                  参数:

                  • first – 用于判断的第一个值

                  • second – 用于判断的第二个值

                  • msg – 验证点的描述信息, 将会被记录在报告中

                    • assert_equal(1, 1, msg="assert 1==1")





                    八、Demo演示




                    假设测试用例为:验证通过QQ音乐搜索框能正确搜索出指定的歌曲并播放
                    测试步骤:
                    1、点击QQ音乐搜索框
                    2、输入指定歌曲名"孤勇者",键盘按下回车键
                    3、正确搜索出陈奕迅版本的歌曲"孤勇者"
                    4、双击歌曲名称进行歌曲播放

                    使用Airtest编写的测试脚本如下:



                    脚本运行效果如下:




                    END



                    以上就是本次的全部内容,如果对你有帮助,麻烦点一点在看+点赞+分享,你的支持就是作者更新最大的动力~

                    最后,欢迎加入杨叔的测试交流群,沟通交流日常测试工作相关内容,2023一起升职加薪,学习进步!加群方式:扫码添加杨叔的微信号,备注(进群

                    往期精彩文章推荐




                    文章转载自程序员杨叔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论