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

【自动化测试】—— Appium使用保姆教程

目录

一. 连接手机

1. 授权

2. 调试

3. 获取参数

二. 启动APP

1. 启动Appium服务

2. 启动Appium Inspector

3. 配置Appium Inspector

三. 功能说明

1. 主菜单功能

2. 快照视图菜单

3. 元素视图菜单

四. 常见问题

1. appPackage有多个设备时


一. 连接手机

1. 授权

首先将手机的开发者模式打开,不同手机的开启方法不同,这里演示的测试机为三星S21+,其他机型的开启方法大家可以直接百度搜索。

(1)进入手机的【设置】选项

(2)进入【开发者选项】

(注:不同手机这里打开方式不一样,一般手机在【关于手机】里找到【版本号】,连续点击【版本号】7次,即可进入开发者模式。

(3)打开【USB调试】:在<开发者选项>页,滑动找到【USB调试】,打开USB调试

2. 调试

    (1)使用数据线连接上手机,如果手机上弹出“是否允许USB调试?”确认框,点【确定】即可。

    (2)在电脑键盘上按【Win+R】,输入cmd打开命令行窗口,输入:adb devices

    如果连接成功就可以看到你的手机deivce id

    注:如果出现device not found,优先检查手机的驱动是否安装正确,也可以到【设备管理器】中去查看对应的设备驱动是否异常,这里推荐使用adb driver installer这个软件来安装对应的设备驱动。

    3. 获取参数

      我们想要通过Appium来运行相关APP,需要获取与其相关的几个参数(后面会用到):

      • platformName:设备的平台名,Android或iOS。
      • platformVersion:Android内核版本号。
      • deviceName:设备名,这里使用刚才ADB里的device id或deviceName。
      • appPackage:apk的包名,在Android系统中是判断一个App的唯一标识。
      • appActivity:这里可以理解为启动名或启动页。

      (1)查看源代码

      这里推荐这种方法,如果被测对象是自研的APP,直接问下对应开发同学,这两个参数的值就可以啦,省时省力。

      (2)使用ADB命令

      连接手机,打开想操作的APP,在cmd中输入以下命令获取参数

      查看platformVersionadb shell getprop ro.build.version.release

      查看deviceName:adb devices -l

      查看appPackage和appActivity

      adb shell "dumpsys window | grep mCurrentFocus"

      二. 启动APP

      1. 启动Appium服务

        动Appium-Server,并且保持连接手机。

        2. 启动Appium Inspector

          新版appium1.22与Appium inspector分离,需要单独下载Appium-Inspector安装

          1下载

          网盘下载地址https://pan.quark.cn/s/2670cddd46d0

          2安装

           下载好之后如下,双击执行即可

          3运行

          安装成功后,启动后界面如下:

          3. 配置Appium Inspector

            我们要启动APP就需要在Capability Builder区域中填写对应APP的启动参数。

            (1)点击【+】按钮,添加属性

            (2)Appium Server按默认写(Remote Host:127.0.0.1,RemotePort

            :4723,Remote Path:/wd/hubCapabilityBuilder填入之前获取的各项参数

            (3)点击【Start Session】,启动APP

            (4)启动时会在测试手机上自动安装依赖应用,启动完成后会自动打开测试APP,并且在Inspector上显示与APP同步的画面【手机上自动安装的Appium Settings 应用安装好不要卸载】

            • 左侧是应用程序的屏幕截图(快照视图)。
            • 中间是应用程序的层次结构,表示为XML。
            • 右侧是元素信息视图

            . 功能说明

            1. 主菜单功能

              】Press BackButton/操作回退:当我们想要查看返回上一个操作查看页面信息,可以通过点击back 按钮。此时Inspector窗口和手机都会同时回到上一个操作的界面,等同于android手机上的返回键。

              】Press Home Buttor/返回主屏幕:从当前应用或界面返回手机主屏幕。

              】Press App Switch Button/应用切换:快速切换最近打开使用的应用程序。

              】Native App Mode:切换为原生APP模式;

              】Web/Hybrid App Mode:切换为混合APP模式,如果APP有小程序或者H5的话可以切这个模式;

              】Refresh Source&Screenshot/刷新:当我们在手机上对APP进行操作后,Inspector窗口的屏幕截图不会自动更新,需要我们通过点击刷新按钮,更新应用的最新页面。

              】Search for element/查找元素:我们可以根据各类元素的定位条件进行元素的相关搜索,方便我们快速定位。

              】Start Recording/录制:可以录制自动化测试脚本,但录制出的脚本默认使用的是xpath定位,xpath的定位方式十分的脆弱,绝对路径定位一旦发生变化,脚本的维护就会变得十分的困难,如果一定要用,推荐使用相对路径的定位方法。

              】Quit Session/退出:当我们不再需要使用Inspector,就可以点击x关闭Inspector窗口

              2. 快照视图菜单

                】Select Elements/查看元素信息:点击select Elements 按钮,然后在屏幕截图中点击要查看的元素,最后在右侧的区域就可以看到元素的xpath,index,package,class,text,resource-id等信息。

                】 Tap/Swipe By Coordinates:使用坐标点击,直接在屏幕截图上使用鼠标来点击元素,手机也会同步操作 。

                】 Download Screenshot:下载当前屏幕截图。

                3. 元素视图菜单

                  】Tap:模拟点击;

                  】Send Keys:如果为输入框的话可以使用这个选项来填写对应的内容;

                  】Clear:清除编辑框内容;

                  】Copy Attributesto Clipboard/复制页面元素:复制当前页面元素的属性信息

                  】Download Screenshot下载当前元素截图

                  】Get Timing:获取选中的元素响应所需的时长。

                  . 常见问题

                  1. appPackage有多个设备时

                  如果有多个设备,需要依次输以下命令查看:

                  adb -s XXXX shell 来制定进入的设备

                  dumpsys window | grep mCurrentFocus 查看appPackage

                  相关文章:

                  【自动化测试】—— Appium使用保姆教程

                  目录 一. 连接手机 1. 授权 2. 调试 3. 获取参数 二. 启动APP 1. 启动Appium服务 2. 启动Appium Inspector 3. 配置Appium Inspector 三. 功能说明 1. 主菜单功能 2. 快照视图菜单 3. 元素视图菜单 四. 常见问题 1. appPackage有多个设备时 一. 连接手机 1. 授权 首先将手机的开…...

                  西门子【Library of General Functions (LGF) for SIMATIC S7-1200 / S7-1500】

                  文章目录 概要整体架构流程技术名词解释技术细节小结 概要 通用函数库 (LGF) 扩展了 TIA Portal 中用于 PLC 编程的 STEP 7 指令&#xff08;数学函数、时间、计数器 等&#xff09;。该库可以不受限制地使用&#xff0c;并包含 FIFO 、搜索功能、矩阵计算、 astro 计…...

                  IntelliJ IDEA 2023.3 中配置 Spring Boot 项目的热加载

                  IntelliJ IDEA 2023.3 中配置 Spring Boot 项目的热加载 在 IntelliJ IDEA 2023.3 中配置 Spring Boot 项目的热加载&#xff0c;可以让你在不重启应用的情况下看到代码修改的效果。以下是详细的配置步骤&#xff1a; 添加 spring-boot-devtools 依赖 在 pom.xml 文件中添加 …...

                  Python----Python高级(正则表达式:语法规则,re库)

                  一、正则表达式 1.1、概念 正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、 regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff0…...

                  通过Ukey或者OTP动态口令实现windows安全登录

                  通过 安当SLA&#xff08;System Login Agent&#xff09;实现Windows安全登录认证&#xff0c;是一种基于双因素认证&#xff08;2FA&#xff09;的解决方案&#xff0c;旨在提升 Windows 系统的登录安全性。以下是详细的实现方法和步骤&#xff1a; 1. 安当SLA的核心功能 安…...

                  Node.js接收文件分片数据并进行合并处理

                  前言&#xff1a;上一篇文章讲了如何进行文件的分片&#xff1a;Vue3使用多线程处理文件分片任务&#xff0c;那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录&#xff1a; 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…...

                  Lsky-Pro在线图片搭建教程(Docker部署方式)

                  Lsky Pro+ 是一个使用 PHP 语言,采用 Laravel 框架开发的一款 Web 图片管理程序,中文名:兰空图床。如果你需要一个在线图床程序,那么这个开源项目可以帮助到你,部署流程非常简单。本章教程记录如何部署Lsky-Pro。 一、拉取镜像 docker pull halcyonazure/lsky-pro-docke…...

                  “深入浅出”系列之算法篇:(2)openCV、openMV、openGL

                  OpenCV是一个的跨平台计算机视觉库,可以运行在Linux囚、Windows 和Mac OS操作系统上。它轻量级而且高效,由一系列 C函数和少量C类构成&#xff0c;同时也提供了Python 接口&#xff0c;实现了图像处理和计算机视觉方面的很多通用算法。 OpenMV是一个开源&#xff0c;低成本&am…...

                  AI 新动态:技术突破与应用拓展

                  目录 一.大语言模型的持续进化 二.AI 在医疗领域的深度应用 疾病诊断 药物研发 三.AI 与自动驾驶的新进展 四.AI 助力环境保护 应对气候变化 能源管理 后记 在当下科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑是最具影响力的领域之一。AI 技…...

                  从CRUD到高级功能:EF Core在.NET Core中全面应用(三)

                  目录 IQueryable使用 原生SQL使用 实体状态跟踪 全局查询筛选器 并发控制使用 IQueryable使用 在EFCore中IQueryable是一个接口用于表示可查询的集合&#xff0c;它继承自IEnumerable但具有一些关键的区别&#xff0c;使得它在处理数据库查询时非常有用&#xff0c;普通集…...

                  【记录】Jenkins版本及JDK关系介绍的官网地址

                  Redhat Jenkins Packages...

                  vue3-json-viewer和vue-json-pretty插件使用,vue3 json数据美化展示

                  本文介绍vue3如何进行json数据pretty展示 1 vue3-json-viewer 1.1 安装 npm install vue3-json-viewer --save1.2 全局引入 在main.ts中引入&#xff0c;然后直接在组件中使用 import { createApp } from vue import App from ./App.vue import JsonViewer from "vue3…...

                  python转转商超书籍信息爬虫

                  1基本理论 1.1概念体系 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等&#xff0c;可以按照我们设置的规则自动化爬取网络上的信息&#xff0c;这些规则被称为爬虫算法。是一种自动化程序&#xff0c;用于从互联网上抓取数据。爬虫通过模拟浏览器的行为&#xff0c;访问网页并…...

                  Spring Boot 中的 InitializingBean:Bean 初始化背后的故事

                  在 Spring Boot 应用中&#xff0c;Bean 的生命周期管理至关重要。InitializingBean 接口允许 Bean 在完成属性注入后执行自定义初始化逻辑。本文将深入探讨 InitializingBean 接口在 Spring Boot 中的应用&#xff0c;揭示其工作原理&#xff0c;并分享一些最佳实践&#xff0…...

                  微信小程序:实现单选,多选,通过变量控制单选/多选

                  一、实现单选功能 微信小程序提供了 radio 组件来实现单选功能。radio 组件需要配合 radio-group 使用。 1. WXML 代码 <radio-group bindchange"onRadioChange"><label wx:for"{{items}}" wx:key"id"><radio value"{{it…...

                  MOS怎样选型,步骤详解

                  一&#xff1a;选用N沟道还是P沟道   为设计选择正确器件的第一步是决定采用N沟道还是P沟道MOSFET。在典型的功率应用中&#xff0c;当一个MOSFET接地&#xff0c;而负载连接到干线电压上时&#xff0c;该MOSFET就构成了低压侧开关。在低压侧开关中&#xff0c;应采用N沟道M…...

                  CMake技术细节:解决未定义,提供参数

                  初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

                  1688 满足跨境业务需求而提供的一组 API 接口

                  1688 跨境属性接口系列是 1688 开放平台为满足跨境业务需求而提供的一组 API 接口&#xff0c;其中最主要的是1688.item_get : 一&#xff1a;1688.item_get接口 接口功能&#xff1a;主要用于查询 1688 商品的跨境属性&#xff0c;为开发者和商家提供了获取商品跨境关键信息…...

                  物联网网关Web服务器--CGI开发实例BMI计算

                  本例子通一个计算体重指数的程序来演示Web服务器CGI开发。 硬件环境&#xff1a;飞腾派开发板&#xff08;国产E2000处理器&#xff09; 软件环境&#xff1a;飞腾派OS&#xff08;Phytium Pi OS&#xff09; 硬件平台参考另一篇博客&#xff1a;国产化ARM平台-飞腾派开发板…...

                  计算机网络 (51)鉴别

                  前言 计算机网络鉴别是信息安全领域中的一项关键技术&#xff0c;主要用于验证用户或信息的真实性&#xff0c;以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身&#xff0c;对实体声称的身份进行唯一识别&#xff0c;以便验证其访问请…...

                  【Docker】搭建一个功能强大的自托管虚拟浏览器 - n.eko

                  前言 本教程基于群晖的NAS设备DS423的docker功能进行搭建&#xff0c;DSM版本为 DSM 7.2.2-72806 Update 2。 n.eko 支持多种类型浏览器在其虚拟环境中运行&#xff0c;本次教程使用 Chromium​ 浏览器镜像进行演示&#xff0c;支持访问内网设备和公网地址。 简介 n.eko 是…...

                  论文笔记(六十二)Diffusion Reward Learning Rewards via Conditional Video Diffusion

                  Diffusion Reward Learning Rewards via Conditional Video Diffusion 文章概括摘要1 引言2 相关工作3 前言4 方法4.1 基于扩散模型的专家视频建模4.2 条件熵作为奖励4.3 训练细节 5 实验5.1 实验设置5.2 主要结果5.3 零样本奖励泛化5.4 真实机器人评估5.5 消融研究 6 结论 文章…...

                  探索 Stable-Diffusion-Webui-Forge:更快的AI图像生成体验

                  目录 简介&#x1f31f; 主要特点&#x1f4e5; 安装步骤1. 下载2. 配置环境和安装依赖3. 模型目录说明 &#x1f680; 运行 Stable-Diffusion-Webui-Forge1. 进入项目目录2. 运行项目3. 打开页面 &#x1f3a8; 使用体验常见问题&#x1f4dd; 小结 简介 Stable-Diffusion-We…...

                  Redis使用基础

                  1 redis介绍 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务 ! 是完全开源的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key-value 数据库。 使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并…...

                  PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10

                  1.环境搭建 硬件环境&#xff1a;CANoe、待测设备&#xff08;包含UDS诊断模块&#xff09; 2.pythonPyCharm环境 pip install robotframework pip install robotframework-ride pip install openpyxl pip install udsoncan pip install python-can pip install can-isotp3…...

                  【TCP】rfc文档

                  tcp协议相关rfc有哪些 TCP&#xff08;传输控制协议&#xff09;是一个复杂的协议&#xff0c;其设计和实现涉及多个RFC文档。以下是一些与TCP协议密切相关的RFC文档列表&#xff0c;按照时间顺序排列&#xff0c;涵盖了从基础定义到高级特性和优化的各个方面&#xff1a; 基…...

                  【SpringCloud】黑马微服务学习笔记

                  目录 1. 关于微服务 ?1.1 微服务与单体架构的区别 ?1.2 SpringCloud 技术 2. 学习前准备 ?2.1 环境搭建 ?2.2 熟悉项目 3. 正式拆分 ?3.1 拆分商品功能模块 ?3.2 拆分购物车功能模块 4. 服务调用 ?4.1 介绍 ?4.2 RustTemplate?的使用 4.3 服务治理-注册中…...

                  梯度提升决策树树(GBDT)公式推导

                  ### 逻辑回归的损失函数 逻辑回归模型用于分类问题&#xff0c;其输出是一个概率值。对于二分类问题&#xff0c;逻辑回归模型的输出可以表示为&#xff1a; \[ P(y 1 | x) \frac{1}{1 e^{-F(x)}} \] 其中 \( F(x) \) 是一个线性组合函数&#xff0c;通常表示为&#xff…...

                  【MySQL】表的基本操作

                  ??表的基本操作 文章目录&#xff1a; 表的基本操作 创建查看表 创建表 查看表结构 表的修改 表的重命名 表的添加与修改 删除表结构 总结 前言&#xff1a; 在数据库中&#xff0c;数据表是存储和组织数据的基本单位&#xff0c;对于数据表的操作是每个程序员需要烂熟…...

                  项目中使用的是 FastJSON(com.alibaba:fastjson)JSON库

                  从你的 pom.xml 文件中可以看到&#xff0c;项目明确依赖了以下 JSON 库&#xff1a; FastJSON&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version> </depende…...