51Testing软件测试论坛

标题: appium的xpath定位 [打印本页]

作者: Mario洁    时间: 2018-3-12 14:57
标题: appium的xpath定位
做自动化,元素定位是我们遇到的第一个困难。总是会有各种各样的问题,导致我们定位不到元素。
前面一篇博客也写了元素定位的几种方法,今天主要分享一下xpath的定位方法。

这里我们仍然拿计算器举例。
[attach]111791[/attach]


比如我这里想去定位这个数字1的按钮。

首先打开UIuiautomatorviewer

[attach]111792[/attach]



我们鼠标点击一下数字7可以看到这个按钮的位置。我们上一篇中也说到了,在元素的属性中,class
就是xpath的地址,我们是可以通过class来写xpath的。

那么这里我们就可以写成:

find_element_by_xpath("//android.support.v4.view.ViewPager/android.widget.LinearLayout/androi
d.widget.LinearLayout[3]/android.widget.Button[1]")
看到这里感觉就像是剥洋葱一样。从外往里一层一层的剥,最终找到我们要定位的目标。
在这里需要注意的是我们在xpath定位的时候不能从最外层的整个页面开始,那样是会报错的。要
从包含该控件的最上层的class开始写,什么是包含该控件的最上层元素呢?就比如这里的android.
support.v4.view.ViewPager,我们点击这个可以发现
[attach]111793[/attach]
android.support.v4.view.ViewPager实际上就是整个键盘的区域。然后在键盘的区域中对数字键1再
进行定位。
还有就是上面我写的是android.widget.LinearLayout[3]/android.widget.Button[1]而不是android.wi
dget.LinearLayout[2]/android.widget.Button[0]貌似和我们的UIuiautomatorviewer获取到的信息不
一样,那么为什么会是这样呢?笔者其实也解释不清楚,哈哈。只是我觉得android.widget.Linear
Layout[3]/android.widget.Button[1]是去定位第三个android.widget.LinearLayout中的第一个andr
oid.widget.Button元素。我记得我在书上看到的说法是xpath中的元素定位都是从1开始而不是从0
开始,所以我通过android.widget.LinearLayout[3]/android.widget.Button[1]去定位到数字1的控件。
这里讲的可能不对,我也在寻找答案中,找到答案后再更新过来。






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2