Mario洁 发表于 2018-3-12 14:57:16

appium的xpath定位

做自动化,元素定位是我们遇到的第一个困难。总是会有各种各样的问题,导致我们定位不到元素。
前面一篇博客也写了元素定位的几种方法,今天主要分享一下xpath的定位方法。

这里我们仍然拿计算器举例。



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

首先打开UIuiautomatorviewer





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

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

find_element_by_xpath("//android.support.v4.view.ViewPager/android.widget.LinearLayout/androi
d.widget.LinearLayout/android.widget.Button")
看到这里感觉就像是剥洋葱一样。从外往里一层一层的剥,最终找到我们要定位的目标。
在这里需要注意的是我们在xpath定位的时候不能从最外层的整个页面开始,那样是会报错的。要
从包含该控件的最上层的class开始写,什么是包含该控件的最上层元素呢?就比如这里的android.
support.v4.view.ViewPager,我们点击这个可以发现

android.support.v4.view.ViewPager实际上就是整个键盘的区域。然后在键盘的区域中对数字键1再
进行定位。
还有就是上面我写的是android.widget.LinearLayout/android.widget.Button而不是android.wi
dget.LinearLayout/android.widget.Button貌似和我们的UIuiautomatorviewer获取到的信息不
一样,那么为什么会是这样呢?笔者其实也解释不清楚,哈哈。只是我觉得android.widget.Linear
Layout/android.widget.Button是去定位第三个android.widget.LinearLayout中的第一个andr
oid.widget.Button元素。我记得我在书上看到的说法是xpath中的元素定位都是从1开始而不是从0
开始,所以我通过android.widget.LinearLayout/android.widget.Button去定位到数字1的控件。
这里讲的可能不对,我也在寻找答案中,找到答案后再更新过来。

页: [1]
查看完整版本: appium的xpath定位