Appium定位Android控件之Xpath轴使用简介(小白篇)

huangsisigong 2020/5/28 23:26:36

前言 常用Android页面结构查看工具: 1、uiautomatorviewer 2、Appium Desktop 如果是查看界面结构和查询resource-id,可以使用android原生的uiautomatorviewer即可。但考虑到Xpath轴的使用需要验证效果,所以本篇文章使用Appium Desktop作为讲解,并使用其中的「Search …

前言

常用Android页面结构查看工具:
1、uiautomatorviewer
2、Appium Desktop
如果是查看界面结构和查询resource-id,可以使用android原生的uiautomatorviewer即可。但考虑到Xpath轴的使用需要验证效果,所以本篇文章使用Appium Desktop作为讲解,并使用其中的「Search for element」方便验证。

正文前

本文主要使用到的轴如下:

轴名称 官话 人话
parent 当前节点的父节点 当前节点的爸爸节点
following-sibling 当前节点之后的所有兄弟节点 当前节点同级的下一个节点/弟弟节点
preceding-sibling 当前节点之前的所有同级节点 当前节点同级的上一个节点/哥哥节点

ps:如需了解xpath简介和基础语法,可以到runoo自行查阅

正文

直接手撕例子,目标是定位到搜索结果中京东一栏的添加按钮

如图所示,该按钮虽然没有text属性,但是有resource-id属性,可以直接通过appium的接口findElementById(By.id("com.xueqiu.android:id/follow_btn")。

看到这里板凳上的小伙伴不禁要举起了手中的板砖了,这不是最基本的id定位吗,我都xxx了你让我看介个!?

稍安勿躁,在这个例子里面搜索结果这个ListView的每一个添加按钮的id都是follow_btn,当前搜索的内容刚好是出现在第一个位置,所以appium通过id定位返回第一个找到的元素确实是我们要的添加按钮,但如果搜索结果是在第二位或者第三位该怎么办呢?又如果这个控件没有id的情况下该怎么办呢?

板凳上的小伙伴:“废话少说,show出你的...xpath吧!”

我们先来看看当前ListView里面每一个Item的结构

其实当前的需求就是通过「京东」来定位父节点下兄弟节点的子节点,梳理一下其中关系:TextView[text=京东]的爸爸节点LinearLayout的弟弟节点LinearLayout的子节点TextView[resource-id=follow_btn],结合前文表格中提及的轴名称对应的xpath表达式如下:

//android.widget.TextView[@text="京东"]/parent::android.widget.LinearLayout/following-sibling::android.widget.LinearLayout/android.widget.TextView[@resource-id='com.xueqiu.android:id/follow_btn']

复制代码

在Appium Destop中填入表达式

找到添加按钮

结尾

至此,关于xpath轴的使用简介暂告一段落。可能文中这个栗子举得并不恰当,小伙伴们说如果知道id,可以通过findElements(By.id("xxx"))来找到所有的按钮,然后blablabla...关联...blablabla...。

我觉得在初始阶段使用id和xpath来定位控件可以说是怎么方便怎么来,栗子中这个xpath表达式能够做到一句定位是挺方便的,但放在代码中有点长,有点丑。

在初始阶段还是要让自动化测试稳定地跑起来才是最重要的。如果自动化测试已经能够稳定跑起来,需要考虑效率问题时,可以计算各种接口的耗时,选择耗时最短的,甚至更深入了解源码实现,找到耗时更短的方式。

最后,如果文中有什么写得不对的,欢迎各位小伙伴拍砖指出。

随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[Appium定位Android控件之Xpath轴使用简介(小白篇)]http://www.zyiz.net/tech/detail-137680.html

上一篇:源码阅读#LayoutInflater的创建过程 & AsyncLayoutInflater原理

下一篇:通过gradle文件构建不同包名的Apk

赞(0)

共有 条评论 网友评论

验证码: 看不清楚?
    关注微信小程序
    程序员编程王-随时随地学编程

    扫描二维码或查找【程序员编程王】

    可以随时随地学编程啦!

    技术文章导航 更多>
    扫一扫关注最新编程教程