• Appium手机Android自动化


    目录

    介绍

    什么是APPium?

    APPium的特点

    环境准备

    adb(android调试桥)常用命令

    appium图形化简单使用 

    连接手机模拟器

    使用appium桌面端应用程序

    ​编辑

     整合java代码测试 

    环境准备

    引入所需依赖

    书写代码简单启动

    ​编辑

    Appium元素定位

    id定位

    介绍

    代码测试

    text定位

    介绍

    代码测试 

    className定位 

     x-path定位

    accessibility id定位

    坐标定位

    元素等待 

    手势操作滑动 

    appium常用api


    介绍

    什么是APPium?

    APPium是一个开源测试自动化框架,适用于原生、混合或移动Web应用程序的自动化测试工具。 APPium使用WebDriver协议驱动iOS、Android等应用程序。

    APPium的特点

    支持多平台(Android、iOS等)

    支持多语言(python、java、ruby、js、c#等)

    APPium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。

    APPium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么client用什么语言来实现都是可以的,这就是如何做到支持多语言的原因;

    APPium基于WebDriver协议,并进行了扩展。这样的好处是可以直接继承WebDriver API,Selenium(WebDriver)各种语言的binding都可以直接拿来使用,省去了为每种语言开发一个client的工作量。

    Appium的哲学不需要重新编译或者修改应用;不被一种语言或者框架约束;不重复造轮子;开源免费

    环境准备

    本篇博客以java语言进行测试appium,所以本地电脑需要配置好jdk,其他环境android sdk和手机模拟器也是必须的

    这里只提供android sdk和appium桌面版程序,jdk和手机模拟器可以百度找下

    appium所需环境

    下载好后解压android sdk

    安装好android后配置下环境变量

    来到android安装目录

    点入到以下目录下

    新增ANDROID_HOME环境变量

    在path中新增变量

     配置好后在cmd中输入adb

    appium安装一路默认即可

    adb(android调试桥)常用命令

     

    一、常用简单的adb命令:

    1、adb devices:                        获取设备列表和设备的状态
    2、adb get-state:                      获取设备的状态(设备的状态有三种:device,设备连接正常;offline,连接出现异常,设备无响应;unknown,设备未连接;)
    3、adb kill-server,adb start-server:  结束,启动adb服务
    4、adb install -r:                     覆盖安装应用(apk)
    5、adb uninstall:                      卸载应用(应用包名)
    6、adb pull :                          将设备上的文件复制到电脑上
    7、adb push :                          将电脑上的文件复制到设备上
    8、adb reboot :                        重启设备
    9、adb connect :                       远程连接设备
    10、adb disconnect :                   断开设备连接
    二、adb shell pm基本的命令:

    1、列出安装在设备上的应用

    # adb shell pm list package -s     列出系统应用
    # adb shell pm list package -3     列出第三方的应用
    # adb shell pm list package -i     列出来源
    # adb shell pm list package -f     列出包名和路径
    2、列出应用apk的位置

    # adb shell pm path packagename    列出应用apk的位置
    3、列出应用的详细信息

    # adb shell pm dump packagename    列出应用相关的信息
    4、清除应用的缓存数据

    # adb shell pm clear packagename   清除应用的缓存数据
    5、安装卸载手机应用:

    首先将test.apk文件push到手机目录中比如/data/local/tmp
    # adb shell pm install /data/local/tmp/test.apk       安装
    # adb shell pm install –r /data/local/tmp/test.apk    重新安装
    # adb shell pm uninstall -k packagename               卸载,加k保留缓存数据
    # adb shell pm install -d apk                         允许降级安装
    三、adb shell am基本的命令:

    1、启动一个 Activity:

    # adb shell am start -n activityname    启动一个 Activity
    2、等待页面启动完成:

    # adb shell am start -W activityname    等待页面启动完成
    3、先停止应用再启动:

    # adb shell am start -S activityname    先停止应用再启动
    4、结束应用:

    # am force-stop  packagename            结束应用
    三、adb shell dumpsys基本的命令:

    1、监控应用数据:

    # adb shell dumpsys cpuinfo       cpu信息
    # adb shell dumpsys meminfo       内存信息
    # adb shell dumpsys power         电源信息
    # adb shell dumpsys battery       电池信息
    # adb shell dumpsys wifi          wifi信息
    # adb shell dumpsys notification  通知信息
    # adb shell dumpsys activity      获取页面信息
    四、关闭某项进程,以monkey为例:

    杀死monkey进程:
    # ps | grep monkey     查看monkey进程的pid
    # kill pid             杀死monkey进程
    五、最近12小时的资源情况:

    # dumpsys procstats --hours 12    最近12小时的资源情况
     六、录制屏幕命令:

    # adb shell screenrecord /sdcard/demo.mp4    视频录制命令
    可选参数:
    1、限制录制时间:
    参数: --time-limit

    2、指定视频分辨率大小:
    参数: --size

    3、指定视频的比特率:
    参数: --bit-rate

    4、在命令行显示log:
    参数: --verbose
     七、截图命令:

    # adb shell screencap -p /sdcard/screen.png    截图并保存到指定位置
    八、input命令:

    adb shell input:
    <可选参数>
    #text 输入文本
    #keyevent 输入事件
    #tap 点击
    #swipe 滑动<坐标><坐标为原地,则是长按>
    九、关于获取当前页面的信息:

    # adb shell dumpsys activity top | findstr ACTIVITY    获取当前界面的Activity
    # adb shell dumpsys activity | findstr mFocusedActivity   获取当前页面的activity
    十、生成当前页面的xml文本:

    # adb shell uiautomator dump [file]    获取当前页面的xml信息
    text 控件中显示的文本内容 
    class 控件的类型 
    package 包名 
    content-desc 说明 
    checkable 是否允许check 
    checked check状态 
    clickable 是否允许click 
    enabled 控件状态 
    focusable 是否允许获取焦点 
    focused 是否获取到焦点 
    scrollable 是否允许滚动 
    long-clickable 是否允许长安 
    password 是否是密码控件 
    selected select状态 
    bounds 控件绘制的长宽及位置 四个数据,分成两组,分别是 左上坐标和右下坐标
     十一、打印页面的log信息:

    # logcat -s ActivityManager    打印页面的log信息
    十二、系统操作指令

       adb shell getprop ro.product.model  获取设备型号

    adb shell getprop ro.build.version.release  获取设备 Android 系统版本

    adb get-serialno  获取设备的序列号(设备号)

    adb shell wm size  获取设备屏幕分辨率

    adb shell dumpsys activity |find "mFocusedActivity" 查看前台应用包名,适用于 Android 7.0 以下,必须先启动 app

    adb shell dumpsys activity |find "mResumedActivity" 查看前台应用包名,适用于 Android 8.0 以上,必须先启动 app

    appium图形化简单使用 

    连接手机模拟器

    准备apk安装包,将apk安装包安装在手机模拟器上

    启动cmd窗口,输入命令查看当前连接的应用

     adb devices

     

     连接相应的手机模拟器,每个手机模拟器的端口号也不同,这里以mumu模拟器进行测试,mumu模拟器端口为7555,其他模拟器端口如下

    模拟器名称                        端口号
    -------------------------------------
    逍遥游                                 21503
    夜神模拟器                          62001 
    海马玩模拟器                      26944 
    网易mumu模拟器                7555 
    天天模拟器                          6555
    BlueStacks                          5555
    雷电安卓模拟器                   5555
    天天安卓模拟器                  5037
    安卓模拟器大师                  54001
    Genymotion                       5555

    连接模拟器

    adb connect 127.0.0.1:端口号

    使用appium桌面端应用程序

     打开appium

    在高级设置里面进行一些配置设置

     

    调整后保存为预设

     调整简单模式的主机为本地 

    启动服务器

     

     点击启动检查会话

    点击自动设定进行编辑

     deviceName(设备地址),platformName(平台名) 

    appPacage名获取:

    来到android sdk安装目录

    输入cmd

     输入命令

    aapt dump badging apk文件目录

     appActivity 主启动入口获取

    在刚才的命令输入后往下翻找 找到 launchable-activity(并不是所有apk都是这个字段,也可能是其他的) 字段

     

     {
      "deviceName": "127.0.0.1:7555",
      "platformName": "Android",
      "appPackage": "com.tencent.mm",
      "appActivity": "com.tencent.mm.ui.LauncherUI",
      "automationName": "UiAutomator2",
      "noReset": "True"
    }

     编辑后另存为预设

    然后启动会话

     

    可以看到模拟器的微信随着appium自动启动了 

    下面以测试抖音为例

    appium桌面客户端上方的工具栏都是模拟真人操作手机的操作

     通过appium客户端可以像浏览器的f12调试工具一样找到页面的各元素标签,从而进行操作

    如果模拟器的app页面和appium显示不一样,那是appium是截图模拟器的app进行显示的,需要手动实时刷新

     整合java代码测试 

    环境准备

    jdk8+maven5.0以上版本

    引入所需依赖

    
        io.appium
        java-client
        6.1.0
    

    书写代码简单启动

    启动测试  启动速度可能会有些慢,根据个人电脑配置等因素而定

    Appium元素定位

    id定位
    介绍

    使用appium进行查看元素

     这个就如同html标签中的id属性一样,但是android可以允许有多个相同的id(这就有点坑)

    代码测试

    测试点击评论按钮

     启动测试

    如果页面中有多个相同id,那么将元素都放到集合中,使用集合下标索引进行取元素点击

    text定位
    介绍

     

    代码测试 

    使用文本定位点击经验

    系统太卡不再贴录屏结果了,可以自己尝试 

    className定位 

     

     x-path定位

    accessibility id定位

    坐标定位

    元素等待 

    手势操作滑动 

    由于前面博主引用的版本是6.1.0,所以这里需要自定义书写滑动代码

     

    可以自行尝试,不再贴图,太卡了o(╥﹏╥)o  博主测试可以成功

    appium常用api

     

  • 相关阅读:
    赶紧进来!!!教你用C语言写三子棋小游戏
    Vue学习
    学习笔记 谷粒03 前端
    react create-react-app v5配置 px2rem (暴露 eject方式)
    pycharm创建的虚拟环境为什么用conda env list命令查询不到?
    JWT的原理及实际使用
    购物H5商城架构运维之路
    Linux 下的 input 子系统开发框架
    Python多线程
    CentOS7.9离线安装 Nginx
  • 原文地址:https://blog.csdn.net/m0_51406695/article/details/136261268