app自动化测试之appium元素定位常用方法

时间:2020-09-09 19:17:17   收藏:0   阅读:61

对于Android而言,查找appUI界面元素属性的工具有三种:appium desktop,uiautomatorviewer.bat,weditor。之前已经介绍过了weditor的使用,这里我将通过使用uiautomatorview工具查看元素的属性值,来介绍Android app元素定位的八种方式。

一,使用uiautomatorview对app页面截图,查看元素属性

建议创建uiautomatorviewer.bat的快捷方式到桌面,下次使用时就不需要进入到android-sdk/tools里打开。

技术图片

二,appium移动端自动化常用的元素定位方法

appium继承了selenium框架中webdriver提供的元素定位方法,接下介绍几种常用的方法。

技术图片

driver.find_element_by_id("com.ss.android.article.news:id/cde").click()

技术图片

find_element_by_class_name("android.widget.HorizontalScrollView")
# "//*[@text=‘发布‘]"该字符串表示:当前页面下所有元素里面text=‘发布‘的元素
drvier.find_element_by_xpath("//*[@text=‘发布‘]").click()

2,class唯一的话可以使用find_element_by_class_name()定位,但大部分情况向class都不是唯一的,此时可以用class与其他属性结合构成xpath,如:

# class与text
driver.find_element_by_xpath("//android.widget.TextView[@text=‘消息通知‘]").click()
# class、text、resource-id结合,注意text与id之间使用and
driver.find_element_by_xpath("//android.widget.TextView[@text=‘消息通知‘ and @resource-id=‘com.ss.android.article.news:id/c_3‘]").click()

技术图片

3,通过父元素定位子元素
在实际项目中,我们可能通过UI的层级结果进行定位。如下图,我们要定位【收藏】按钮,除了使用2方外,还可以它的上一级元素定位。

# 父元素下面有4个class相同的子元素,子元素后面不加索引,则默认定位的是第一个子元素
driver.find_element_by_xpath("//androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout")

技术图片
子元素有多个,通过class的索引定位

# 后面的2表示索引,注意uiautomatorviewer里显示的是从0开始的,而xpath里面是从1开始
driver.find_element_by_xpath("//androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout[2]")

技术图片

4,通过元素子元素定位父元素
即通过下一级元素定位上一级元素。

# 后面的/..表示当前级的上一级,此处即整个下载管理按钮区域
driver.find_element_by_xpath("//android.widget.TextView[@text=‘下载管理‘]/..")

技术图片

同样定位元素的上一级的上一级(孙子定位爷爷),如下

driver.find_element_by_xpath("//android.widget.TextView[@text=‘下载管理‘]/../..")

5,定位兄弟元素
通过同级元素定位,下面以定位【下载管理】上的图标为例

# 兄->父->兄
driver.find_element_by_xpath("//android.widget.TextView[@text=‘下载管理‘]/../android.widget.ImageView")

技术图片

三,总结。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!