zoukankan      html  css  js  c++  java
  • APP自动化元素定位(二)

    id定位

    Id就是一个元素的唯一身份标识,由开发人员在项目中指定,如果有对应的resource-id,我们就可以采 取这种方式来实现定位操作

    注意:有可能app项目开发人员并不是很严谨,一个页面会有多个相同的resource-id值 text属性定位

    • 找到购物车元素并且点击
    • 实例:id定位  --根据resource-id属性来定位
      WebElement shopElement = driver.findElement(MobileBy.id("com.apple.apple2:id/navigation_shopping"));
      tikuElement.click();

    text属性定位

    • 使用UIAutomator定位text属性元素
    • 实例:text定位 --根据text属性来进行定位
      driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text("聚划算")")).click();

    className定位

    • 根据class属性查找元素
    • 实例:className定位  --根据class属性(了解)
      List<WebElement> list = driver.findElements(MobileBy.className("android.widget.TextView"));
      System.out.println(list.size());

    这种方式一般得到的会是多个元素--不推荐

    accessibility id定位

    • 在UIAutomatorViewer并没有此属性,对应是content-desc属性
    • 实例:accessbilityid定位 --根据content-desc属性
      driver.findElementByAccessibilityId("购物车").click();

    xpath定位

    • xpath其实就是一个path(路径),一个描述页面元素位置信息的路径,相当于元素的坐标
    • xpath基于XML文档树状结构,是XML路径语言,用来查询xml文档中的节点
    • 既可以用于XML,也可以用于HTML

    xpath绝对定位

    从根开始找 / (根目录)

    缺点

    • 一旦页面结构发生变化(比如重新设计时,路径少了两节),该路径也随之失效,必须重新写
    • xpath相对定位 只要不是/开始的,就是相对路径 相对路径以//开头,表示让xpath引擎从文档的任意符合的元素节点开始进行解析

    路径解释:

    • // 匹配指定节点,不考虑它们位置(/则表示绝对路径,从根下开始)
    • * 通配符,匹配任意元素节点(标签名)。
    • @选取属性
    • [] 属性判断条件表达式 

    优点

    灵活,方便,耦合性低

    xpath轴定位(相对定位中的一种)

    当某个元素的各个属性及其组合都不足以定位时,那么可以利用其兄弟节点或者父节点等各种可以定位 的元素进行定位。

    轴名称 释义
    parent    选取当前节点的父节点
    preceding-sibling  选取当前节点之前的所有兄弟节点
    following-sibling  选取当前节点之后的所有兄弟节点

    使用语法:

    /轴名称::节点名称[@属性=值]

    实例:xpath相对定位

    driver.findElement(MobileBy.xpath("//android.widget.FrameLayout[@content-desc='购物车']")).click();
    driver.findElement(MobileBy.xpath("//*[@content-desc='购物车']")).click();
    driver.findElement(MobileBy.xpath("//*[@resource-id='com.apple.apple2:id/navigation_shopping']")).click();
    driver.findElement(MobileBy.xpath("//*[@resource-id='com.apple.apple2:id/navigation_shopping' and @content-desc='购物车']")).click();
    通过爸爸找到儿子
    driver.findElement(By.xpath("//*[@resource-id='com.apple.apple2:id/navigation_shopping']/android.widget.ImageView")).click();
    • 轴定位用法1:通过parent轴找爸爸
    • driver.findElement(MobileBy.xpath("//*[@resource-id='com.apple.apple2:id/icon']/parent::android.widget.FrameLayout")).click();
    • 轴定位用法2:通过preceding-sibling找哥哥
    • 注意:第一个哥哥的位置不需要加[0],从第二个哥哥开始通过index属性确认索引位置
    • driver.findElement(MobileBy.xpath("//*[@content-desc='我的']/preceding-sibling::android.widget.FrameLayout[2]")).click();
    • 轴定位用法3:通过following-sibling找弟弟,第一个弟弟的位置不需要加[0],从第二个弟弟开始通过index属性确认索引位置
    • driver.findElement(MobileBy.xpath("//*[@content-desc='逛逛']/following-sibling::android.widget.FrameLayout[2]")).click();

    总结 

    1. 常见App元素定位:id(resource-id属性)、text(text属性)、className(了解)、accessbility id(content-desc属性)
    2. 基本万能元素定位:xpath,xpath相对路径语法、轴定位在相对定位应用(通过附近的元素来辅助找 对应的元素)
  • 相关阅读:
    单例模式
    简单工厂模式
    MSSQL编程笔记三 left join on 和 left join where区别
    冒泡排序、选择排序和插入排序
    Extjs性能问题
    C#委托入门
    metro css for cnblogs
    委托、事件与Observer设计模式
    C# 集合类[转]
    工厂方法模式(Factory Method Pattern)
  • 原文地址:https://www.cnblogs.com/zhiyu07/p/14175254.html
Copyright © 2011-2022 走看看