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.pswp.cn/web/82133.shtml

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

相关文章

UDP/TCP协议全解

目录 一. UDP协议 1.UDP协议概念 2.UDP数据报格式 3.UDP协议差错控制 二. TCP协议 1.TCP协议概念 2.三次握手与四次挥手 3.TCP报文段格式(重点) 4.流量控制 5.拥塞控制 一. UDP协议 1.UDP协议概念 当应用层的进程1要向进程2传输报文&#xff…

AWS之数据分析

目录 数据分析产品对比 1. Amazon Athena 3. AWS Lake Formation 4. AWS Glue 5. Amazon OpenSearch Service 6. Amazon Kinesis Data Analytics 7. Amazon Redshift 8.Amazon Redshift Spectrum 搜索服务对比 核心功能与定位对比 适用场景 关键差异总结 注意事项 …

第13讲、Odoo 18 配置文件(odoo.conf)详细解读

1. 概述 Odoo 配置文件(odoo.conf)是管理 Odoo 服务器行为的核心工具,涵盖了网络、安全、数据库、性能等多方面的关键参数。本文档系统梳理 Odoo 18 配置文件的主要参数,结合实际应用场景,提供权威的配置建议与最佳实…

Python详细实现Dash仪表盘:从零构建数据可视化界面

目录 Python详细实现Dash仪表盘:从零构建数据可视化界面一、引言:为什么选择 Dash?二、Dash 的核心组成与工作流程三、项目目标使用数据: 四、数学模型与聚合公式五、仪表盘结构设计页面设计结构如下: 六、完整代码实现…

ubuntu磁盘挂载

在 Ubuntu 系统中,挂载额外的磁盘或分区是一项常见操作,无论是为了扩展存储空间还是组织数据。本文将详细介绍如何使用mount命令挂载文件系统,并处理可能遇到的问题。 1、挂载文件系统的基本步骤 1.1、 查找磁盘设备名称 首先需要确定要挂载…

[9-2] USART串口外设 江协科技学习笔记(9个知识点)

1 2 3 智能卡、IrDA和LIN是三种不同的通信技术,它们在电子和汽车领域中有着广泛的应用: • 智能卡(Smart Card): • 是什么:智能卡是一种带有嵌入式微处理器和存储器的塑料卡片,可以存储和处理数…

【js逆向_AES】全国二手房指数数据爬取

目标:请求参数signcode,请求结果data。 网址:aHR0cDovL3d3dy5jY2hpbmRleC5jb20vSG9tZS9pbmRleA 查看载荷 查看响应数据 点击xhr,发现所有请求参数都是一个signCode,还是加密后的结果,对应结果中数据data也…

模块化设计,static和extern(面试题常见)

文章目录 一、函数的声明和定义1.1 单个文件1.2 多个文件1.3 static和extern1.3.1 static修饰局部变量1.3.2 static修饰全局变量1.3.3 static修饰函数 总结 一、函数的声明和定义 1.1 单个文件 一般我们在使用函数的时候,直接将函数写出来就使用了 题目:写一个函数…

PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)

文章目录 地址类QUrl主要功能URL 格式介绍常见 scheme(协议)类型QUrl 类常用方法常用方法示例典型应用场景 地址类QUrl QUrl 是 PySide6.QtCore 模块中的一个类,用于处理和操作 URL(统一资源定位符)。它可以解析、构建…

GEE:获取研究区的DEM数据

最近有粉丝追更 GEE 系列,说上次看完 DEM 代码解析后,自己试着改了一版。今天咱们就来拆解他的优化版代码 ——基于 SRTM 数据获取研究区 DEM 并导出,顺便聊聊怎么把 GEE 代码写得更专业! 先下结论:代码逻辑完整,3 处细节值得新手抄作业! 这版代码在数据加载→裁剪→可…

汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity):成本、效益与行业影响

汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity):成本、效益与行业影响 到 2030 年,汽车行业将迎来一场安全技术的深度变革,其中 “三重安全防护”(功能安全 FuSa、预期功能安全 SOTIF、网络安全&…

深入理解设计模式之状态模式

深入理解设计模式之:状态模式(State Pattern) 一、什么是状态模式? 状态模式(State Pattern)是一种行为型设计模式。它允许一个对象在其内部状态发生改变时,改变其行为(即表现出不…

Redis的大Key问题如何解决?

大家好,我是锋哥。今天分享关于【Redis的大Key问题如何解决?】面试题。希望对大家有帮助; Redis的大Key问题如何解决? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis中的“大Key”问题是指某个键的值占用了过多…

【STM32开发板】接口部分

一、USB接口 可以看到USBP和USBN与PA12,PA11引脚相接,根据协议,需要添加上拉电阻 二、ADC和DAC 根据原理图找到可以作为ADC和DAC的引脚 ADC和DAC属于模拟部分的,所以要接模拟地 三、指示灯电路 找几个通用的引脚,因为单片机的灌电流比拉电流…

[Hackers and Painters] 读书笔记 | 设计模式思想 | LISP

目录 黑客与艺术的关系 “如果你有两个选择,就选择较难的那个“ 金钱不等于财富。创造有价值的东西就是创造财富 项目公式 探讨关于优秀程序员的话题 摘抄 保罗格雷厄姆其人其事 人物经历 图书介绍 个人作品编辑 译者序 为什么书呆子不受欢迎 黑客与画…

Linux基本指令/下

目录 1.echo、cat与printf 2. > 操作符 与 >> 操作符 3. < 操作符 4.消息传送 linux文件深入 5.文件类型 6.mv命令 7.时间相关指令 8.查找命令 9.grep命令 10.zip/unzip/tar命令 11.scp命令 12.bc命令 13.uname 指令 14.快捷键大全 15.关机/重启/睡…

Apptrace:APP安全加速解决方案

2021 年&#xff0c;某知名电商平台在 “618” 大促期间遭遇 DDoS 攻击&#xff0c;支付系统瘫痪近 2 小时&#xff1b;2022 年&#xff0c;一款热门手游在新版本上线时因 CC 攻击导致服务器崩溃。观察发现&#xff0c;电商大促、暑期流量高峰和年末结算期等关键商业周期&#…

NodeJS全栈开发面试题讲解——P1Node.js 基础与核心机制

✅ 1.1 Node.js 的事件循环原理&#xff1f;如何处理异步操作&#xff1f; 面试官您好&#xff0c;我理解事件循环是 Node.js 的异步非阻塞编程核心。 Node.js 构建在 V8 引擎与 libuv 库之上。虽然 Node.js 是单线程模型&#xff0c;但它通过事件循环&#xff08;event loop&a…

【深度学习】sglang 的部署参数详解

SGLang 的部署参数详解 SGLang(Structured Generation Language)是一个高性能的大语言模型推理框架,专为结构化生成和多模态应用设计。本文将全面介绍SGLang的部署参数,帮助你充分发挥其性能潜力。 🚀 SGLang 项目概览 SGLang是由UC Berkeley开发的新一代LLM推理引擎,…

MATLAB实战:机器学习分类回归示例

以下是一个使用MATLAB的Statistics and Machine Learning Toolbox实现分类和回归任务的完整示例代码。代码包含鸢尾花分类、手写数字分类和汽车数据回归任务&#xff0c;并评估模型性能。 %% 加载内置数据集 % 鸢尾花数据集&#xff08;分类&#xff09; load fisheriris; X_i…