UiAutomator定位用于Android APP的元素定位,使用UI Automator API(UISelector类)来搜索特定元素。 Appium将Java代码作为字符串发送到服务器实现对应用程序的交互。
UiAutomator是android的工作引擎,所以定位速度快。缺点是语法表达式复杂,容易写错。
可参考官方文档:https://developer.android.com/reference/android/support/test/uiautomator/UiSelector
下面将介绍UiSelector类一些常用接口使用方法。
uiautomator定位方式
通过 resource-id定位
new UiSelector().resourceld("id")
通过 classname定位
new UiSelector().className("className")
通过 content-desc定位
new UiSelector().description("contenet-desc属性")
通过文本定位
- text文本定位
new UiSelector().text("text文本")
- textContains 模糊匹配
new UiSelector().textContains("包含text文本")
- textStartsWith,以某个文本开头来匹配
new UiSelector().textStartsWith("以text文本开头")
- 正则表达式 textMatches 匹配
- id与text属性组合
1
2id_text = 'resourceld("com.baidu.yuedu:id/webbooktitle").text("textname")'
driver.find_element_by_android_uiautomator(id_text).click() - class与text属性组合
1
2class_text='className("android.widget.TextView").text("textname")'
driver.find_element_by_android_uiautomator(class_text).click()
父子元素、兄弟元素定位
父子关系定位 childSelector
通过父元素找儿子元素1
son = 'resourceld("com.baidu.yuedu:id/rl_tabs").childSelector(text("股票"))'
兄弟定位 fromParent
通过相邻的兄弟元素定位,通过兄弟元素,找到同一父级元素下的子元素1
brother = 'resourceld("com.baidu.yuedu:id/lefttitle").fromParent(text("用户"))'
滚动查找元素
1 | 'new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(newUiSelector().text("查找的文本").instance(0));' |
uiautomator定位实例
跟 App自动化测试 | Appium元素定位(一)的测试过程一样,判断股票价格
测试过程:
- 打开雪球app
- 点击搜索框
- 输入”招商银行”
- 选择
- 获取股价,并判断
1 | import pytest |
执行结果:
本文标题:App自动化测试 | Appium元素定位(二)
文章作者:hiyo
文章链接:https://hiyongz.github.io/posts/appium-locator-uiautomator/
许可协议:本博客文章除特别声明外,均采用CC BY-NC-ND 4.0 许可协议。转载请保留原文链接及作者。