Appium自动化(7) - 控件定位工具之Appium 的 Inspector
如果你还想从头学起Appium,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1693896.html
前言
- 上一篇文章介绍了另一块控件定位工具:UIAutomatorviewer
- 这一篇,我们来介绍另一款工具:Appium Desktop的Inspector
UIAutomatorviewer 的局限性
- 不能校验我们写的定位表达式是否正确定位到控件(类似浏览器上的F12)
- 连接不够稳定
- 不能模拟用户动作
Appium Desktop 的 Inspector 的优势
- 可以校验定位表达式(如:XPATH表达式)
- 通过设置Desired Capabilities来连接手机,比较稳定
- 可以模拟用户动作(如:点击,返回,滑动等操作)
- 可以录制一系列操作,然后转换成代码
Inspector 的入门使用
- 首先,要启动Appium Server
- 然后,在窗口点击右上角Start Inspector Session(如图),即可弹出一个窗口
- 输入好Desired Capabilities后,点击【Start Session】就阔以啦

默认会选中Automatic Server
Will use currently-running Appium Desktop server http://localhost:4723
表示正在使用本地的Appium Server
注意:久了这里可能会为空,需要手动选择本地Appium Server哦
下方的Desired Capabilities
因为只是定位控件,所以写必传的参数就可以啦!
可以直接将下面的值改了,然后复制粘贴到右侧的 JSON Representation 内哦
{
"platformName": "Android",
"plathformVersion": ,
"deviceName": "test0106",
"appPackage": "io.manong.developerdaily",
"appActivity": "io.toutiao.android.ui.activity.LaunchActivity",
"noReset": true,
"newCommandTimeout":
}

Inspector 定位控件界面的详细介绍
怎么看功能都比UIAutomatorviewer丰富吧!哈哈哈
红色圈:截图的手机界面
不多介绍,可以点击元素
蓝色圈:顶部操作栏
从左往右的按钮依次是
- Select Element:选择元素
- Swipe By Coordinates:选择滑动的起始和结束位置(后面说)
- Tap By Coordinates:使得手机界面变换可操作状态,可以点击界面的元素
- Back:模拟Android的返回键
- Refresh Source & Screenshot:刷新页面,用来重新获取手机当前界面
- Start Recording:录制操作
- Search for element:校验定位表达式
- Copy XML Source to Clipboard:复制XML树
- Quit Session & Close Inspector:退出当前Session
黄色圈:XML树
以XML树的形式,展示界面上的控件布局
绿色圈:控件属性区域
选择某个控件,在这里可以显示该控件的所有属性和值
Selected Element 的详细介绍

顶部的Tap、Send Keys、Clear
模拟用户的操作
- tap:相当于点击该元素
- send keys:输入值,针对输入框的操作
- clear:清空所有值
建议:说实话,我不建议用这些操作,因为很容易造成断开连接(左侧界面一直loading)....反正我这边经常这样,如果不会的话当然最好用啦!
Find By xpath
提供了该元素的XPATH表达式
当然不推荐用哈,毕竟是绝对路径,太长了..........还是自己写吧!
那串黄色背景色的英文
不建议使用XPath定位器,因为它很脆弱,建议让开发团队提供独特的可访问性定位器(即:resource-id)
Attribute - Value
属性列表,后面用一篇文章单独讲解哦
Search for element 的详细介绍


选择你要校验的定位类型,然后输入你写的表达式,最后【Search】,就可以看到结果了

如果能找到Elements的话表达式就是正确的哦,然后你还可以针对该元素进行一些操作
Start Recording 的详细介绍

- 点击开始录制之后,再点击Tap By Coordinates,进入界面可操作状态
- 然后就可以开始点击你想要的元素了,这个时候就开始录制了
- 最后在Recorder下面会显示对应的代码,右侧可以选择不同的语言
- 建议:不要过多使用该功能;可以看到录制的代码是根据坐标去定位元素的,换个手机同一个元素坐标可能就不同了,可移植性不高
Appium自动化(7) - 控件定位工具之Appium 的 Inspector的更多相关文章
- 【WEB自动化测试之控件定位】基于HTML5控件的唯一控件属性定位
一.WEB控件定位是什么 要想弄懂这个问题,我们还是基于实践来学习.我们先来看一条入门级别自动化测试用例的构成. DemoCase:正确用户名和密码登录博客园,登录成功 URL: https:// ...
- Appium自动化(6) - 控件定位工具之uiautomatorviewer 的详细介绍
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 app定位不如web定位那么 ...
- App控件定位
本文将分享Android相关基础知识和Android APP控件定位工具的使用方法. Android基础知识 Android布局 Android是通过容器的布局属性来管理子控件的位置关系(iOS去掉了 ...
- 【转】Appium基于安卓的各种FindElement的控件定位方法实践
原文地址:http://blog.csdn.net/zhubaitian/article/details/39754041#t11 AppiumDriver的各种findElement方法的尝试,尝试 ...
- Appium基于安卓的各种FindElement的控件定位方法实践和建议
AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用. 1. findElementByName 1.1 示例 el = driver.fin ...
- Appium基于安卓的各种FindElement的控件定位
转自:http://www.2cto.com/kf/201410/340345.html 1. findElementByName 1.1 示例 ? 1 2 el = driver.findEleme ...
- appium 控件定位
转自:http://www.2cto.com/kf/201410/340345.html AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用 ...
- 转载:Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)
来源于:http://blog.csdn.net/zhubaitian/article/details/39803857 1. 背景 为保持这个系列的一致性,我们继续用SDK自带的NotePad实例应 ...
- Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)
本人之前以前撰文描写叙述Appium和UIAutomator框架是怎样定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin ...
随机推荐
- centos 部署 vue项目
安装Nodejs 下载安装包,可选择其他版本 node-v10.16.0-linux-x64.tar.xz 将下载文件上传至linux服务器并解压 tar -xvf node-v10.16.0-lin ...
- thinkphp5.1+ 使用 Redis 缓存
修改 config/cache.php 将其配置成多个缓存类型,示例 <?php // +---------------------------------------------------- ...
- 2019-2020-1 20199328《Linux内核原理与分析》第四周作业
<Linux内核原理与分析>第四周作业 步骤一 首先我们指定一个内核并指定内存根文件系统,这里的bzImage是vmLinux经过gzip压缩的内核,"b"表示&quo ...
- [Qt] QProcess::startDetached() 避免弹窗,或者窗口一闪而过
主动宣告setProcessState(QProcess::NotRunning) 或者在堆上new一个QProcess. 出处: https://stackoverflow.com/q ...
- java 之 jsp tomcat启动失败问题
问题描述: 创建了一个helloServlet 代码如下 package Test; import java.io.IOException; import javax.servlet.ServletE ...
- 【已解决】React项目中按需引入ant-design报错TypeError: injectBabelPlugin is not a function
react项目中ant-design按需加载,使用react-app-rewired的时候报错 运行npm start或者yarn start报如下错误: TypeError: injectBabel ...
- 15个 MySQL 基础面试题,DBA 们准备好了吗?
此前我们已经有发表过Linux 面试基础问答之一.二和三共3篇文章,获得读者的好评,同时我们得到反馈,有些读者希望这种交互式学习方法能够做得更加灵活.心动不如行动,我们这就为您奉上 15个 MySQL ...
- HDU1873 看病要排队【模拟+优先队列】
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 图论--割点--Tarjan模板
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...
- python——append后的列表为什么打印出来为空
关于python 列表append的用法: list = [] list = list.append("c") print(list) >>>None 正确写法应 ...