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

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

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

首先打开UIuiautomatorviewer

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

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

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的控件。这里讲的可能不对,我也在寻找答案中,找到答案后再更新过来。

appium的xpath定位的更多相关文章

  1. Appium 的xpath定位

    Appium 的xpath定位 1.如果元素text是唯一的,可以通过text文本定位 //*[@text=’text文本属性’] # 定位text driver.find_element_by_xp ...

  2. Appium之xpath定位元素

    原文:http://www.cnblogs.com/cnkemi/p/9180525.html appium也是以webdriver为基的,对于元素的定位也基本一致,只是增加一些更适合移动平台的独特方 ...

  3. Appium之xpath定位详解

    前面也说过appium也是以webdriver为基的,对于元素的定位也基本一致,只是增加一些更适合移动平台的独特方式,下面将着重介绍xpath方法,这应该是UI层元素定位最强大的方法啦! 以淘宝app ...

  4. Appium Android 元素定位方法 原生+H5

    APPIUM Android 定位方式   1.定位元素应用元素 1.1通过id定位元素 Android里面定位的id一般为resrouce-id: 代码可以这样写: WebElement eleme ...

  5. 【appium】根据xpath定位元素

    1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是“note1”和“note2”添加到Notepad上面,我们要做的就是尝试用xpath的方法来定位 ...

  6. appium 3-4-1034等待、日志、性能数据、xpath定位、web driver协议

    1.等待 1.1精确等待 sleep 不推荐 @Test public void testWait1() throws InterruptedException{ day_time(); Thread ...

  7. 四:RF框架appium工具之xpath定位

    XPATH定位方法具体的学会,还是在今年1月份,以前运用的都不熟练. 这个定位神器是一定要掌握的,不然有你抓狂的时候. 第一要掌握它的书写格式,这个好上手. 第二要掌握它的具体用法.这个就要多练习了, ...

  8. 初探appium之元素定位(1)

    无论是selenium还是appium,元素定位都是我们开始实现自动化面临的第一个问题.selenium还好,我们可以在浏览器的调试页面进行元素定位还是蛮方便的.那么appium怎么做呢? 我看到很多 ...

  9. 让新版appium支持by_name定位

    org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this sess ...

随机推荐

  1. 【Redis】配置redis主从复制

    阅读目录 redis-3.2.1.master tar zxvf redis-3.2.1.tar.gz mv redis-3.2.1 redis-3.2.1.slave-1 tar zxvf redi ...

  2. 【转】关于 hashCode() 你需要了解的 3 件事

    在 Java 中,每一个对象都有一个容易理解但是仍然有时候被遗忘或者被误用的 hashCode 方法.这里有3件事情要时刻牢记以避免常见的陷阱. 一个对象的哈希码允许算法和数据结构将对象放入隔间,就象 ...

  3. bzoj1382: [Baltic2001]Mars Maps

    Description 给出N个矩形,N<=10000.其坐标不超过10^9.求其面积并 Input 先给出一个数字N,代表有N个矩形. 接下来N行,每行四个数,代表矩形的坐标. Output ...

  4. php 根据指定的键对多维数组进行排序

    根据指定的键对多维数组排序,可以按照多个键排序 我们通常有一些多维数组需要排序: $guys = array( array( 'name' => 'jake', 'score' => 80 ...

  5. 6.25$post('',function(){});无法触发问题

    试了很久,发现把这个方法放错位置了

  6. HDU3516 树的构造

    题目大意:平面上有n个点,构成一个单调递减的序列.即对于任意的i<j,有xi<xj,yi>yj.现在要用一棵树连接这n个点.树边为有向边,只能向右或向上.求最小的权值. 分析:本题其 ...

  7. svn: E200030: sqlite[S10]: disk I/O error

    1. 经遇到的问题,它出现(在我的情况下,至少)要与TortoiseSVN的相互作用.禁用TortoiseSVN的图标缓存(设置>图标重载>缓存“无”>申请)拥有的一切工作就好了 ( ...

  8. 《黄聪:手机移动站SEO优化教程》3、如何禁止百度对PC网站进行自动转码

    视频地址:http://v.youku.com/v_show/id_XNzE2OTM0NzU2.html

  9. Android酷炫实用的开源框架(UI框架) 转

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  10. Flink单机版安装与wordCount

    Flink为大数据处理工具,类似hadoop,spark.但它能够在大规模分布式系统中快速处理,与spark相似也是基于内存运算,并以低延迟性和高容错性主城,其核心特性是实时的处理流数据.从此大数据生 ...