Appium 安卓自动化(Appium Inspector)

前言

来啦老铁!

如我在上期文章 Appium 安卓自动化(环境搭建) 中所讲的那样,我打算用几篇文章记录一下手机端自动化测试的探索过程,感兴趣的读者也可以翻翻上期介绍环境搭建的文章。

而今天我们要学习记录的是:

  • Appium Inspector 的使用;

Appium Inspector 早期是是 Appium GUI自带的一个元素定位工具,具体入口在 GUI 启动 server 后的下图入口:

Appium Inspector

早期点击入口后可以直接打开 Appium Inspector 进行元素定位等后续操作;

而后来,Appium 将 Appium Inspector 从 Appium GUI 上剥离出去,作为另一个独立的应用。

接下来我们一起来看看如何使用 Appium Inspector 吧~

学习路径

  1. 下载安装 Appium Inspector 应用;
  2. 认识 Appium Inspector 应用界面;
  3. 配置 Appium Inspector 基础配置项;
  4. 配置 Appium Inspector Desired Capabilities 配置项;
  5. 系统环境变量处理;
  6. 启动 Session;
  7. 使用 Appium Inspector 进行元素定位;

1. 下载安装 Appium Inspector 应用;

点击上述 Appium GUI 上的 Appium Inspector 入口会把我们带往 Appium Inspector 的 git 仓库,Appium Inspector 提供两种使用方式,一种为桌面应用,一种为网页应用,如下图:

Appium Inspector 的两种使用方式
  • 先来看看桌面版;

a. 点击 Releases 入口,前往下载站点下载桌面应用包,例如我选择 mac 版:

下载 Appium Inspector

b. 下载完成后,打开安装包进行安装;
c. 安装完成后就能在电脑上看到安装好的 Appium Inspector 应用;

安装 Appium Inspector 应用
  • 再来看看网页版;

点击 web application 入口,便可打开网页版,网页版的网址:https://inspector.appiumpro.com/

Appium Inspector 网页版

与桌面版一模一样,事实上,通过简单阅读 Appium Inspector 的源代码,我们会发现,Appium Inspector 的桌面版是使用 Electron 技术的,从原理上来说,实际上与网页版基本没有差异,因此,我们不用过多研究二者的差异,可以认为是相同的;

2. 认识 Appium Inspector 应用界面;

  • Appium Inspector 应用界面 如下:
Appium Inspector 应用界面
  • 其中:

a. 编码 1 为 Appium server 配置项区域,其中 Remote Host 默认为 0.0.0.0,Remote Port 默认为 4723,Remote Path 默认为 /。

b. 编码 2、3 区域为 Capabilities 相关区域,也即 Appium session 相关区域,其中编号 2 区域的 Desire Capabilities 为 Capabilities 的手动逐个添加区域,编号 3 区域为 JSON 形式的 Capabilities 的批量添加区;

3. 配置 Appium Inspector 基础配置项;

  • 我们需要将区域 1 中的 Remote Path 作一下修改,将其值改为 /wd/hub;

没错,跟 selenium server 一样,懂 UI 自动化的都懂;

修改 Remote Path 值

4. 配置 Appium Inspector Desired Capabilities 配置项;

接下来便是十分重要的 Desired Capabilities 配置项,这关系到我们能否接管我们的设备,进而从事元素定位等相关工作;

  • 根据上一篇文章中的 Capabilities 以及 Appium Inspector Desired Capabilities 配置项的配置规则,基本配置如下:
{
  "platformName": "Android",
  "appium:automationName": "UiAutomator2",
  "appium:browserName": "Chrome",
  "appium:platformVersion": "7.0",
  "appium:deviceName": "pixel2",
  "appium:udid": "emulator-5554"
}
Appium Inspector Desired Capabilities 配置项

(由于笔者要探索的是使用 Appium Inspector 对手机端浏览器进行元素定位,因此此处并未设计 app 包名即 appium:appPackage、app activity 即 appium:appActivity 等相关的配置,取而代之的是 appium:browserName)。

如此,便可以开始连接我们的设备了,如安卓虚拟机、安卓机器;

5. 系统环境变量处理;

  • 配置完成后,我们点击应用的右下角的 “Start Session” 按钮,连接我们的设备;
  • 然而,刚开始可能会遇到一些问题,比如下面的报错:

Failed to create session.
An unknown server-side error occurred while processing the command. Original error: Cannot verify the signature of '/Applications/Appium Server GUI.app/Contents/Resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-v4.24.0.apk'. Original error: The JAVA_HOME environment variable must be set for Android Tools to work properly

报错
  • 根据报错提示,需要设置 JAVA_HOME 环境变量,具体步骤为:

a. 命令行打开 ~/.bash_profile 文件:

vi ~/.bash_profile

b. ~/.bash_profile 文件内按 i 进入编辑模式

c. 在 ~/.bash_profile 文件内增加内容:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-18.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib

其中 JAVA_HOME 的值需要读者自行在电脑上找到对应的文件夹;

d. 按键盘的 esc 按钮;

e. ~/.bash_profile 文件中输入如下文本并回车,完成保存;

:wq!
  • 完成后再次点击 “Start Session” 按钮,如果还存在问题,则需要重启 Appium Inspector(忘记我探索过程中是否有因为重启解决了这个问题,总之重启过)。

6. 启动 Session;

  • 前提是我们已经启动了 Appium Server,这个参考上期文章中 Appium 安卓自动化(环境搭建) 中的步骤7,启动 appium server;
  • 当然还有启动好了安卓虚拟机或已连接安卓机器;
  • 点击 Appium Inspector 上右下角的 “Start Session” 按钮启动 Session;
启动 Session
  • 稍等片刻后,我们的安卓虚拟机或安卓设备打开 Chrome 浏览器空白页面:
image.png
  • 同时,Appium Inspector 变为:

如此,便表示 Session 已经创建成功;

7. 使用 Appium Inspector 进行元素定位;

作为演示用途,我将演示菜鸟教程网站后,获取菜鸟教程网站页面上的元素定位。

  • 手机端输入网址访问菜鸟教程网站:
访问菜鸟教程网站
  • Appium Inspector 点击刷新按钮;
刷新
  • 选择被测对象的类型;

这个有 2 个选项,一个是 Native App Mode(原生 App 模型),一个是 Web/Hybrid App Mode(网页或混合应用模型),默认是 Native App Mode,在本例我需要切换为 Web/Hybrid App Mode,否则无法进行元素定位;

Web/Hybrid App Mode
  • 使用选择元素入口进行元素定位;
元素定位

(双击 xpath 值即可进行复制 xpath 值)

至此,我们已经能通过 Appium Inspector 定位手机网页上页面元素。

特别注意:

  • 实际操作过程中,我发现,利用 Appium Inspector 定位手机网页页面元素经常难以精准定位,效果极差,因此,手机网页上页面元素还是更推荐使用桌面浏览器的 emulator 对元素进行定位,效果如下:
使用桌面浏览器的 emulator
  • 反观利用 Appium Inspector 定位原生 app 的页面元素,则效果比较好,如对系统闹钟这个应用内的元素进行定位:
定位原生 app 的页面元素

虽然本次探索学习并未能很好地达到定位手机网页页面元素的目的,但也并非一无是处,其价值体现在:

1. 了解了利用 Appium Inspector 定位手机网页页面元素这种方式并不靠谱;
2. 为将来原生应用页面元素定位奠定知识基础;

至此,我们已通过探索、学习,基本掌握了 Appium Inspector 定位元素的知识,今天先到这里,再接再厉~

能力有限,欢迎指正、互相交流,感谢~

如果本文对您有帮助,麻烦点赞、关注!

感谢~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容