技术分享 | app自动化测试(Android)--高级定位技巧
本文节选自霍格沃兹测试开发学社内部教材
通常使用定位器定位页面上的元素会发生一些定位不到元素 , 或者定位失败的情况 。 有可能是页面上元素不唯一 , 有可能是页面发生变化 。 这节介绍定位元素的高级用法 , 使用层级关系定位或者多重属性定位的方式来确定元素的唯一性 , 从而更精准 , 更稳定的定位到想要的元素 。
XPath高级定位技巧
XPath简介
XPath的英文全称为:XMLPathLanguage , 意旨对XML中的元素进行路径定位的一种语言 , 它可适用XML标记语言 , Html标记语言 , appDom结构 。 XPath是自动化工具的定位基础 , 可适用于Selenium工具 , Appium工具 , Appcrawler工具 。 由于前面章节已经对XPath进行说明 , 本篇只做举例说明 。
XPath基本语法
下面是XPath的常用方法:

文章图片

文章图片
"/"还可表示子元素"//"还可表示子孙元素
XPath模糊定位技巧
contains()方法是模糊匹配的定位方法 , 对于一个元素的属性不固定 , 就可以模糊匹配 。 如://[contains(@content-desc,'帮助')] , 示例代码:
PYTHON版本
driver.find_element(By.XPATH,
'//*[contains(@text,"注册")]')
driver.find_element(By.XPATH,
'//*[contains(@content-desc,"搜索")]')
driver.find_element(By.XPATH,
'//*[contains(@resource-id,"login_phone")]')
JAVA版本
driver.findElement(By.xpath(
"//*[contains(@text,"注册")]"));
driver.findElement(By.xpath(
"//*[contains(@content-desc,"搜索")]"));
driver.findElement(By.xpath(
"//*[contains(@resource-id,"login_phone")]"));
XPath组合定位技巧
通过XPath可以同时匹配2个甚至多个属性来完成元素定位 。 这里常用的属性有text、resource-id、class、index、content-desc等 , 这些属性任意组合完成定位 , 示例代码:
PYTHON版本
driver.find_element(
By.XPATH,'//*[@text="我的"and@resource-id="tab_name"]'
).click()
driver.find_element(
By.XPATH,'//*[@text="注册/登录"and@index="1"]'
).click()
JAVA版本
driver.findElement(By.xpath(
"//*[@text="我的"and@resource-id="tab_name"]")).click();
driver.findElement(By.xpath(
"//*[@text="注册/登录"and@index="1"]")).click();
XPath层级定位
通常定位元素的时候可能会涉及到通过子元素去定位父元素 , 或者父元素定位子元素 , 或者定位兄弟元素 , xpath支持父子关系 , 兄弟关系元素的查找 。 示例代码如下:
PYTHON版本
#通过子元素定位父元素
#方法一:..
driver.find_element_by_xpath(
'//*[@text="手机号"]/..').tag_name
#方法二parent::*
driver.find_element_by_xpath(
'[@text="手机号"]/parent::*').tag_name
#通过元素定位兄弟元素
driver.find_element_by_xpath(
'//*[@text="手机号"]/../li'
).tag_name
JAVA版本
//通过子元素定位父元素
//方法一:..
driver.findElement(By.xpath(
"//*[@text="手机号"]/..")).getTagName();
//方法二parent::*
driver.findElement(By.xpath(
"[@text="手机号"]/parent::*")).getTagName();
//通过元素定位兄弟元素
driver.findElement(By.xpath(
"//*[@text="手机号"]/../li"
)).getTagName();
案例
场景一:
应用:雪球apk
可以使用uiautomatorviewer工具进行dom分析 , 然后对分析到的元素进行XPath定位 , 比如下面的搜索框 , 可以使用元素的多种属性进行定位 , 常用的有text , resource-id , class , content-desc等属性 。
- 微信更新正式版!“清理缓存”功能变强,小程序终于能分享到朋友圈
- 为什么现在很少有人提及“克隆技术”了?“克隆技术”有何缺点?
- A股:光伏电池片技术的“杀手锏”,HJT电池真正龙头仅有这5只!
- Apple Watch|稳了,iPhone 息屏显示功能来了
- 电信|印度电信和IT部长:印度本土研发的5G技术有潜力赢得全球市场
- 罗斯威尔坠毁了3架UFO?逆向工程研究早已开始,外星技术已被掌握
- NVIDIA的DLSS技术已经深受玩家和开发者认可|性能2倍于DLSS!AMD游戏神技FSR 2.0正式支持Xb
- Apple Watch|爆料指Apple Watch Series 8晶片沿用6代!将推极限运动版
- 闲鱼|闲鱼app或暗藏“灰色”交易?内行人道出实情,你经历过吗?
- 电子商务|3D打印机有多强大?科学家曾利用3D打印技术打印出火箭喷射器
