当前位置: 首页 > backend >正文

02 APP 自动化-Appium 运行原理详解

环境搭建见 01 APP 自动化-环境搭建

文章目录

        • 一、Appium及Appium自动化测试原理
        • 二、Appium 自动化配置项
        • 三、常见 ADB 命令
        • 四、第一个 app 自动化脚本

一、Appium及Appium自动化测试原理

Appium 跨平台、开源的 app 自动化测试框架,用来测试 app 应用程序,支持Android/iOS 操作系统
为什么通过代码操作不同的操作系统(Android/IOS)不同版本的手机终端的应用程序?

  • web自动测试:如何通过代码,实现操作pc端的浏览器进行对应的操作?
    代码->selenium 中 webdriver->xxx浏览器驱动->操控浏览器实现对应操作
  • app自动化测试: 代码-----? 操控手机端的应用程序,实现对应 app 自动化测试
二、Appium 自动化配置项

不同系统不同版本可能用到不同的软件包/框架----》python 脚本指定操作终端的这些参数设置
Desired Capabilities - Appium
常用必备参数:

  • platformName 操作系统(iOS/android) Android
  • platformVersion 系统版本 16.0
  • deviceName 设备名称 127.0.0.1:62001
  • app/appPackage 包名 ‘com.tal.kaoyan’
  • appActivity 入口启动页面 ‘com.tal.kaoyan.ui.activity.SplashActivity’ —Android only
{"platformName": "iOS","appium:options": {"platformVersion": "14.4","deviceName": "iPhone 11","app": "Some-App.app.zip","automationName": "XCUITest"}
三、常见 ADB 命令

ADB 命令:命令调试桥

  • 1、连接模拟器 命令:
    • 查看连接设备:adb devices 或者 连接设备: adb connect 127.0.0.1:62001
    • 不同模拟器端口号不同:雷神:5555 夜神:62001 mumu:7555 逍遥:21503
  • 2、获取包名及入口启动页面 aapt dump badging 包路径
    • 进入 aapt.exe 所在的路径(D:\Andriod_SDK\Andriod_SDK\build-tools\29.0.3)或者把所在路径也配置到系统变量中
    • 再输入命令:aapt dump badging C:\Users\x\Desktop\kaoyan3.1.0.apk
    • 注意:包路径不要包含中文
    • 获取包名:
    • 获取启动页面appActivity 的值:
四、第一个 app 自动化脚本

以上环境配置完成后,按照下面步骤,即可实现 app 自动化启动
1、通过 appium 启动 appium server 服务
2、电脑链接手机,或者打开模拟器

  • 通过adb devices 查看连接状态,保证是已连接状态
  • 若不是连接状态,通过adb connect 127.0.0.1:62001命令连接设备

3、编写以下脚本代码进行运行:

# -*- coding=utf-8 -*-from appium import webdriver
from appium.options.android import UiAutomator2Options# 设置操作终端的配置参数
desired_caps = dict(platformName='Android', # 指定操作系统platformVersion='7.1.2',# 指定操作系统版本automationName='Uiautomator2',# 默认框架deviceName='127.0.0.1:62001',# 指定设备名称appPackage='com.tal.kaoyan',# 被操作的应用程序包名appActivity='com.tal.kaoyan.ui.activity.SplashActivity',# 启动页面noReset='false',# true--不重置  false--重置app='F:\Pycharm\AppAuto\kaoyan3.1.0.apk'  # apk文件所在路径
)
# 发送命令给 appium server
driver = webdriver.Remote('http://127.0.0.1:4723', options=UiAutomator2Options().load_capabilities(desired_caps))

具体实现原理:

  • 1、自动化脚本发送 http 请求到 appium server

  • 2、创建会话 session

  • 3、确认终端设备是否连接,并且确认安卓的版本 确认设置其他参数与终端是否一致

  • 4、 appium会推送一个包 ‘AppiumBootstrap.jar’
    AppiumBootstrap.jar:实现 appium server 与手机终端进行数据交互

  • 5、下一个 http 请求

http://www.xdnf.cn/news/10036.html

相关文章:

  • 【cpp-httplib】 安装与使用
  • 【ArcGIS微课1000例】0147:Geographic Imager6.2下载安装教程
  • PCB设计实践(三十)地平面完整性
  • 【孙悟空喝水】2022-2-7
  • 使用flex实现三栏布局,两边固定,中间自适应
  • 烟草工业数字化转型:科技领航,重塑传统产业新生态
  • OpenCV中的重要、常用知识点汇总(图像处理、特征检测与匹配、图像分割与轮廓分析、视频处理与分析和机器学习与深度学习等)
  • 强化学习的前世今生(五)— SAC算法
  • WPF的交互核心:命令系统(ICommand)
  • golang 实现基于redis的并行流量控制(计数锁)
  • Joern项目第三方库依赖分析
  • 系统架构设计综合知识与案例分析
  • 深入 RAG(检索增强生成)系统架构:如何构建一个能查资料的大语言模型系统
  • MCU STM32搭配存储SD NAND(贴片式T卡)于智能皮电手环(Galvanic Skin Response, GSR 手环)的全方位评测
  • 硬件工程师笔记——运算放大电路Multisim电路仿真实验汇总
  • 三格电子——如何解决消防设备联网问题
  • [JVM] JVM内存调优
  • 黑河流域30弧秒分辨率月尺度地表水及地下水灌溉量数据集(1981-2013)
  • Redis Sorted Set 深度解析:从原理到实战应用
  • GitLens 教学(学习更新中)
  • (一)微服务(垂直API)
  • SpringBoot+vue+SSE+Nginx实现消息实时推送
  • 0-EATSA-GNN:基于图节点分类师生机制的边缘感知和两阶段注意力增强图神经网络(code)
  • grounded_sam2 使用踩坑笔记
  • gbase8s数据库+mybatis问题记录
  • 【JUC】深入解析 JUC 并发编程:单例模式、懒汉模式、饿汉模式、及懒汉模式线程安全问题解析和使用 volatile 解决内存可见性问题与指令重排序问题
  • Java处理动态的属性:字段不固定、需要动态扩展的 JSON 数据结构
  • 爬虫--以爬取小说为例
  • android协程异步编程常用方法
  • B端产品经理如何快速完成产品原型设计