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

news2025/6/6 6:30:41

环境搭建见 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.coloradmin.cn/o/2399038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

由docker引入架构简单展开说说技术栈学习之路

想象一下,你开了一家线上小卖部(单机版),突然爆单了怎么办?别急,技术架构的升级打怪之路,可比哆啦A梦的口袋还神奇! 第1关:单枪匹马的创业初期(单机架构&…

linux 1.0.5

环境变量到底是什么 也就是windows上面的环境变量 就是这个东东,用户变量和系统变量,那这些到底是啥呢? 主包只是用过,配置来配置去的,就是不知道是啥意思 windows上面的环境变量 windows的ls命令是dir 输入calc可有…

强化学习的前世今生(五)— SAC算法

书接前四篇 强化学习的前世今生(一) 强化学习的前世今生(二) 强化学习的前世今生(三)— PPO算法 强化学习的前世今生(四)— DDPG算法 本文为大家介绍SAC算法 7 SAC 7.1 最大熵强化…

生成对抗网络(GAN)基础原理深度解析:从直观理解到形式化表达

摘要 本文详细解析 生成对抗网络(GAN) 的 核心原理,从通俗类比入手,结合印假钞与警察博弈的案例阐述生成器 与 判别器 的对抗机制;通过模型结构示意图,解析 噪声采样、样本生成 及判别流程;基于…

【GitHub开源AI精选】WhisperX:70倍实时语音转录、革命性词级时间戳与多说话人分离技术

系列篇章💥 No.文章1【GitHub开源AI精选】LLM 驱动的影视解说工具:Narrato AI 一站式高效创作实践2【GitHub开源AI精选】德国比勒费尔德大学TryOffDiff——高保真服装重建的虚拟试穿技术新突破3【GitHub开源AI精选】哈工大(深圳)…

华为OD机试真题——文件目录大小(2025 A卷:100分)Java/python/JavaScript/C++/C语言/GO六种语言最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《文件目录大小》: 目录 题…

消费者行为变革下开源AI智能名片与链动2+1模式S2B2C商城小程序的协同创新路径

摘要:在信息爆炸与消费理性化趋势下,消费者从被动接受转向主动筛选,企业营销模式面临重构挑战。本文提出开源AI智能名片与链动21模式S2B2C商城小程序的协同创新框架,通过AI驱动的精准触达、链动裂变机制与S2B2C生态赋能&#xff0…

软考 系统架构设计师系列知识点之杂项集萃(78)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(77) 第139题 以下关于软件测试工具的叙述,错误的是()。 A. 静态测试工具可用于对软件需求、结构设计、详细设计和代码进行评审、走查和审查 B. 静…

如何解决MySQL Workbench中的错误Error Code: 1175

错误描述: 在MySQL Workbench8.0中练习SQL语句时,执行一条update语句,总是提示如下错误: Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnTo disab…

Docker 镜像(或 Docker 容器)中查找文件命令

在 Docker 镜像(或 Docker 容器)中运行如下两个命令时: cd / find . -name generate.py它们的含义如下,我们来一行一行详细拆解,并结合例子讲解: ✅ 第一行:cd / ✅ 含义 cd 是“change dire…

MySQL进阶篇(存储引擎、索引、视图、SQL性能优化、存储过程、触发器、锁)

MySQL进阶篇 存储引擎篇MySQL体系结构存储引擎简介常用存储引擎简介存储引擎的选择 索引篇索引简介索引结构(1)BTree索引(2)hash索引 索引分类索引语法SQL性能分析指标(1)SQL执行频率(2)慢查询日志(3)profile详情(4)explain或desc执行计划 索引使用引起索引的失效行为SQL提示覆…

BugKu Web渗透之game1

启动场景,打开网页如下: 是一个游戏。 步骤一: 右键查看源代码也没有发现异常。 步骤二: 点击开始游戏来看看。 结果他是这种搭高楼的游戏。我玩了一下子,玩到350分就game over。 之后就显示游戏结束,如…

Axure设计案例——科技感渐变柱状图

想让你的数据展示瞬间脱颖而出,成为众人瞩目的焦点吗?快来看看这个 Axure 设计的科技感渐变柱状图案例!科技感设计风格以炫酷的渐变色彩打破传统柱状图的单调,营造出一种令人惊叹的视觉盛宴。每一个柱状体都仿佛蕴含着无限能量&am…

互联网大厂智能体平台体验笔记字节扣子罗盘、阿里云百炼、百度千帆 、腾讯元器、TI-ONE平台、云智能体开发平台

互联网大厂 字节扣子、阿里云百炼、百度千帆 、腾讯元器、TI-ONE平台、云智能体开发平台 体验 开始动手 了解 智能体,发现已经落后时代太远 光头部互联网大厂对开 公开的平台就已经这么多,可以学习和了解,相关的信息 整理了对应的平台地址…

深入解析ReactJS中JSX的底层工作原理

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…

NodeMediaEdge任务管理

NodeMediaEdge任务管理 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中,拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 在未使用NodeMediaServer的情况下,或是对部分视频流需要单独推送的需求,也可…

SpringBoot集成第三方jar的完整指南

原文地址:https://blog.csdn.net/weixin_43826336/article/details/141640152?ops_request_misc%257B%2522request%255Fid%2522%253A%25227d4118ef2d572ba4428caf83f1d2bb28%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id7d4118…

前端基础之《Vue(18)—路由知识点》

一、两种路由模式 1、hash路由 (1)url中有#号,背后是监听onhashchange事件 (2)hash路由部署上线不会出现404问题,背后是基于history api实现的 2、history路由 (1)url中没有#号 &a…

014校园管理系统技术解析:构建智慧校园管理平台

校园管理系统技术解析:构建智慧校园管理平台 在教育信息化快速发展的当下,校园管理系统成为提升学校管理效率、优化校园服务的重要工具。该系统集成院校管理、投票管理等多个核心模块,面向管理员、用户和院内管理员三种角色,通过…

SQLite详细解读

一、SQLite 是什么? SQLite 是一个嵌入式关系型数据库管理系统(RDBMS)。它不是像 MySQL 或 PostgreSQL 那样的客户端-服务器数据库引擎,而是一个自包含的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 核心特点 嵌入式/库…