【L1.第四章】 Appium Inspector 自动化用例录制

Python+Appium+Pytest 自动化测试教程

  • [1、Appium Inspector 是什么?](#1、Appium Inspector 是什么?)
  • [2、Appium Inspector 主要功能有那些?](#2、Appium Inspector 主要功能有那些?)
  • [3、Appium Inspector 配置 Desired Capablility 信息](#3、Appium Inspector 配置 Desired Capablility 信息)
    • [1、获取被测 App 信息](#1、获取被测 App 信息)
    • [2、验证 Activity](#2、验证 Activity)
    • [3、配置 Remote Path](#3、配置 Remote Path)
    • [4、配置 Desired Capablility](#4、配置 Desired Capablility)
      • [4.1、设置 Capablility](#4.1、设置 Capablility)
      • [4.2、保存 Capablility](#4.2、保存 Capablility)
      • [4.3、启动 Session](#4.3、启动 Session)
  • [4、Appium Inspector 基础功能详解](#4、Appium Inspector 基础功能详解)
  • [5、使用 Appium Inspector 例录制自动化用步骤](#5、使用 Appium Inspector 例录制自动化用步骤)

1、Appium Inspector 是什么?

Appium Inspector 是 Appium 的一个工具,用于帮助开发人员和测试人员分析和调试移动应用程序。它提供了图形界面和交互式的功能,使您能够轻松地检查应用程序的 UI 元素、获取元素属性、执行操作和生成自动化测试脚本。

2、Appium Inspector 主要功能有那些?

  • 元素定位和查看:Appium Inspector 允许通过简单的点击来选择和定位应用程序中的 UI 元素。可以直接在应用程序界面上点击元素,然后 Inspector 会显示元素的属性信息,如 ID、类名、文本内容等。这样就可以轻松地确定元素的定位策略和属性,用于后续的测试脚本编写。

  • 执行操作:Appium Inspector 提供了一些操作按钮,可以模拟用户在应用程序上的操作。例如可以点击按钮、输入文本、滑动屏幕等。这样可以验证应用程序的交互和功能。

  • 自动化脚本生成:Inspector 还具有自动化脚本生成功能,可以根据用户在应用程序上的操作生成相应的自动化测试脚本。这样可以快速生成测试脚本的起点,然后进行进一步的定制和扩展。

  • 元素搜索和筛选:Inspector 提供了搜索和筛选功能,可以找到特定的 UI 元素。可以使用属性值、文本内容等条件来搜索和筛选元素,从而快速定位到目标元素。

3、Appium Inspector 配置 Desired Capablility 信息

1、获取被测 App 信息

配置 Desired Capabilities 需要获取被测 App 的包名与启动 Activity 名。可以按照以下命令获取。
第一种方式:依次执行以下三条命令,通过需要找的软件名称执行 monkey 命令,得到具体页面的 Activity。

bash 复制代码
# 找到当前设备里所有的软件
adb shell pm list packages

# 根据关键词 筛选出需要找的软件的包名
# MacOS
adb shell pm list packages | grep "软件名"
# Windows
adb shell pm list packages | findstr "软件名"

# 在指定的应用程序上执行一个 Monkecy 测试事件,并输出详细的日志信息
adb shell monkey -p "包名" -vvv 1
#     // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=io.appium.android.apis/.ApiDemos } in package io.appium.android.apis

第二种方式:打印并筛选 adb 的日志,等待日志刷新结束,重新打开需要测试的 APP,即可得到 package 和 activity。

bash 复制代码
# Mac
adb logcat ActivityManager:I | grep "包名"
# Windows
adb logcat ActivityManager:I | findstr "包名"

2、验证 Activity

使用 adb 启动应用命令,验证获取到的包名和 Activity 是否可以成功启动被测应用。

bash 复制代码
adb shell am start -W -S -n 包名/.ApiDemos

Stopping: 包名
Starting: Intent { cmp=包名/.ApiDemos }
Status: ok
Activity: 包名/.ApiDemos
ThisTime: 437
TotalTime: 437
WaitTime: 452
Complete

命令中的 -S 代表先停止目标应用,再启动;-W 代表展示启动时间信息。

可以成功启动,代表包名与启动 Activity 正确无误。

3、配置 Remote Path

Remote Path:/ & /wd/hub

Remote Host:127.0.0.1 & 服务器IP地址

Remote Port:4723 & 自定义端口号

跟 Appium Server GUI 中的配置对应,分别为 IP、端口和地址,其中地址默认配置 /wd/hub 即可。
IP 如果是本机就配置 127.0.0.1,如果 Appium Server 和 Appium Inspector 不是同一台机器,那么就需要配置 Appium Server 所在机器的 IP(Appium Server GUI 的 HOST 也需要配置本机 IP,不能配置为 0.0.0.0)。

4、配置 Desired Capablility

初始化参数(Capability)是 JSON 数据类型编码的键和值,当一个新的自动化会话被请求时,Appium 客户端发送此参数到服务端。用来告诉 Appium 驱动程序做哪些特定的测试。通过设置参数可以传递给 Appium Server 对应的配置信息。

4.1、设置 Capablility

  • platformName(必填):平台,Android/iOS
  • appium:automationName(必填):驱动:uiautomator2/XCUITest
  • appium:deviceName:设备名
  • appium:appPackage:应用的包名
  • appium:appActivity:应用启动 Activity 名
bash 复制代码
{
   "platformName": "android",
   "appium:automationName": "uiautomator2",
   "appium:deviceName": "设备名",
   "appium:appPackage": "应用的包名",
   "appium:appActivity":"Activity 名"
}

4.2、保存 Capablility

如果要保存当前的 Desired Capabilites 配置,可以点击 Save as 按钮,然后在弹出的框中输入名字,就可以保存成功了。

这样重启 Appium Inspector 后,下次直接选择保存的配置就可以,不需要重新输入配置信息。

Attach to Session

如果 Appium 已经有连接到手机的 Session ,那么直接选择 Session ID,加入即可,不需要再进行配置。

4.3、启动 Session

配置好 Capablility 后,点击 Start Session 按钮,即可启动 Session,进入 Inspector 页面。


4、Appium Inspector 基础功能详解

  • Native App Mode:原生态 APP 模式。
  • Web/Hybrid App Mode:Web 和混合模式移动应用。
  • Select Elements:选择元素。
  • Swipe By Coordinates:通过坐标点滑动。
  • Tap By Coordinates:通过坐标点点击。
  • Back:返回按键。
  • Refresh Source & Screenshot:刷新按钮,同步移动端页面。
  • Start Recording:录制按钮。
  • Search for element:搜索定位表达式。
  • Quit Session & Close Inspector:退出当前 Session。

Native app mode:原生态 APP 模式,点击此按钮定位原生态元素。
Web/Hybrid App mode:Web 和混合模式移动应用,有 web view 时需要定位元素需要选择此按钮。
查看元素:当想要查看某一元素时,点击如下图"选择元素"按钮,然后在屏幕截图中点击要查看的元素,最后在最右侧区域可以看到元素的 xpath、id 等定位元素。
滑动坐标:点击如下"滑动坐标"按钮,即可在屏幕截图上进行滑动操作
点击坐标:点击如下"点击坐标点"按钮,即可在屏幕上进行坐标点击操作跟直接操作手机一样了。注意此功能和选择元素按钮互斥,两个只能选一个。
回退按钮:相当于手机的返回键。当我们想要查看返回上一个操作查看页面信息,可以通过点击"返回"按钮。此时 Inspector 窗口和手机都会同时回到上一个操作的界面。(等同于 android 手机上的返回键)。
刷新按钮:刷新按钮,当我们在手机上对 APP 进行操作后,Inspector 窗口的屏幕截图不会自动更新,需要我们通过点击"刷新源和屏幕截图"按钮,更新应用的最新页面。
用例录制:录制按钮,点击此按钮后可以进行录制。当我们想知道如何编写操作界面的代码时,可以点击"录制"按钮,然后对屏幕截图进行操作,即可以实现操作的代码录制功能,非常实用。注意的是录制时,需要使手机页面变成可操作状态。
搜索定位表达式:根据 ID 或 Xpath 定位元素,检测表达式是否正确。选择一个属性 id(resource-id)、name(text)、xpath、className(class) 等。输入属性对应的值,点击 Search,即可搜索到界面对应元素的按钮。
退出 Session:退出当前 Session,点击后返回到 Appium Inspector 的 Start Session 页面。

4.1、元素定位与查看

同步到移动端页面后,点击 Select Elements 按钮进入选择元素模式。

点击页面元素后,即可查看元素源码和元素的属性信息。

4.2、查看页面源码

在 App Source 界面中,可以查看当前选中的元素在的源码,以 XML 树的形式,展示界面上的控件布局。

对于源码,可以进行如下操作

  • 复制页面源码
  • 下载页面源码

4.3、查看元素属性

在 Selected Element 界面中,可以查看当前选中元素的详细属性信息。

做自动化测试需要定位元素,就需要用到元素的这些属性信息。

对于选中的元素还可以进行操作:

  1. 点击:选择一个元素后,还可以"点击"元素,当您使用一个元素执行 Tap 操作时,Inspector 将发送命令到 Appium,它将执行它。如果操作成功,左侧将生成一个新的屏幕截图,您将看到应用程序的更新状态和 XML。如果不成功,您看到错误消息。

  2. 输入文本:选择一个元素后,还可以"发送内容"到元素(前提:它是一个输入框 EditText)。同样 Inspector 将发送命令到 Appium 执行它。

  3. 清空文本:选择一个元素后,还可以对元素"清空内容"(前提:它是一个输入框 EditText)。同样 Inspector 将发送命令到 Appium 执行它。

  4. 复制元素属性:可以将元素属性以 JSON 格式保存到粘贴板。

5、使用 Appium Inspector 例录制自动化用步骤

  • 点击 Start Recording 按钮进入录制状态
  • 在同步过来的界面中选择元素
  • 在 Selected Elements 界面中进行操作
  • 测试操作结束后点击 Pause Recording 结束录制
  • 在 Recorder 界面展示录制脚本

录制自动化测试步骤:

  • 打开 API Demo 应用
  • 点击 OS,进入下个界面
  • 点击【Morse Code】
  • 输入内容【ceshiren.com
  • 返回上一个页面
  • 返回上一个页面
相关推荐
Dovir多多2 小时前
Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息
网络·python·计算机网络·安全·网络安全·数据分析
Fuweizn4 小时前
医院也逐渐使用复合机器人向自动化转型升级
自动化·医院·复合机器人
沐霜枫叶4 小时前
解决pycharm无法识别miniconda
ide·python·pycharm
白手小弟4 小时前
python wxauto库实现微信自动化发送信息、回复、添加好友等
运维·自动化
途途途途4 小时前
精选9个自动化任务的Python脚本精选
数据库·python·自动化
ii_best4 小时前
ios按键精灵自动化的脚本教程:自动点赞功能的实现
运维·ios·自动化
3DVisionary4 小时前
数字图像相关DIC技术用于机械臂自动化焊接全场变形测量
运维·数码相机·自动化·焊接变形实验·数字图像相关dic技术·自动化焊接全场变形测量·非接触高精度环境适应性全场测量
ether-lin5 小时前
DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2)
kubernetes·自动化·devops
蓝染然5 小时前
jax踩坑指南——人类早期驯服jax实录
python
许野平5 小时前
Rust: enum 和 i32 的区别和互换
python·算法·rust·enum·i32