• MAC M1 Pro搭建移动端UI自动化测试环境--Android篇


    前言

    目前大家熟知的测试主要分为功能测试、接口测试、UI测试,本文重点介绍的则是UI测试

    UI 测试

    UI 测试 通常分为WEB 端和 移动端,前者主要是针对PC端的网站进行测试,主要是模拟各个浏览器的内核的兼容性,后者则是针对App Native、H5、Hybrid进行模拟测试,发现多机型的兼容性问题

    App Native 测试

    本文主要介绍APP 原生的UI测试,当然APP 原生目前主流的又分为Android和iOS两大阵营,本文主要先介绍Android,后面文章再介绍iOS的UI测试,

    技术选型

    采用目前主流的开源框架Appium

    在这里插入图片描述

    准备依赖的安装包

    1. Jdk 1.8
    2. android-sdk(或者安装android studio)
    3. appium server gui
    4. appium inspector
    5. com.starbucks.cn_8.13.0_4315.apk
    6. 夜神模拟器(或者连接真机测试)

    搭建环境

    如下步骤皆是以Mac 系统,M1Pro环境下进行实践的

    安装android studio

    下载地址:
    https://android-studio.en.softonic.com/mac
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    安装appium server gui

    下载地址:
    https://github.com/appium/appium-desktop/releases/tag/v1.22.3-4
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    安装appium inspector

    下载地址:
    https://github.com/appium/appium-inspector/releases

    这个工具下载的目的是为了定位app的界面元素,并可以生成录制界面操作的客户端脚本

    在这里插入图片描述

    连接真机

    以小米10S为例说明
    开启【开发者选项】
    在【设置】–》【我的设备】–》【全部参数】–》【MIUI版本】
    点击多次MIUI版本 开启【开发者选项】

    开启USB调试相关开关
    在这里插入图片描述
    注意:
    连接小米真机调试时,还需要在真机安装SIM卡

    以星巴克 app为例 自动下单点咖啡

    配置主要参数

    在这里插入图片描述
    {
    “platformName”: “Android”,
    “appium:platformVersion”: “12”,
    “appium:deviceName”: “M2102J2SC”,
    “appium:appPackage”: “com.starbucks.cn”,
    “appium:appActivity”: “com.starbucks.cn.ui.StarbucksLaunchActivity”
    }

    deviceName 可以通过如下操作获取:
    $adb devices -l
    在这里插入图片描述
    platformVersion 可以通过如下操作获取:
    在这里插入图片描述

    appPackage和 appActivity可以通过如下操作获取:

    下载星巴克Android安装包apk,可以在应用宝市场中下载
    https://a.app.qq.com/o/simple.jsp?pkgname=com.starbucks.cn&channel=0002160650432d595942&fromcase=60001

    在这里插入图片描述

    开始测试

    启动inspector 会话

    在这里插入图片描述

    录制界面操作脚本

    在这里插入图片描述

    将录制的脚本复制到python客户端工具中:

    el1 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.view.ViewGroup[3]/android.widget.FrameLayout[1]/android.view.ViewGroup")
    el1.click()
    el2 = driver.find_element(by=AppiumBy.ID, value="com.starbucks.cn:id/phone_number")
    el2.send_keys("13877889911")
    el3 = driver.find_element(by=AppiumBy.ID, value="com.starbucks.cn:id/code_button")
    el3.click()
    el4 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/androidx.viewpager.widget.ViewPager/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.EditText")
    el4.send_keys("2221")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    执行如上脚本完成自动化UI测试

  • 相关阅读:
    缩短从需求到上线的距离:集成多种工程实践的稳定框架 | 开源日报 No.55
    专访阿里云 RocketMQ 团队:现代微服务架构需要新的消息系统
    基于Java+SpringBoot+vue新冠疫情物资管理系统(毕业设计参考)
    Cookie和Session
    网卡状态检测函数
    记一次 OSS 大批量文件下载的实现 → bat脚本不好玩!
    JVM垃圾回收算法
    语法练习:diff21
    恢复grub在硬盘对多系统的引导
    前端 | (十四)canvas基本用法 | 尚硅谷前端HTML5教程(html5入门经典)
  • 原文地址:https://blog.csdn.net/AiMaiShanHuHai/article/details/126120592