appium的xpath定位

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

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

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

首先打开UIuiautomatorviewerblog

 

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

那么这里咱们就能够写成:get

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