控件操作

说明

这个章节主要讲解选择器类使用和节点信息类


选择器对象

  • 选择器对象是支持级联选择,可以在无法直接选择到元素的时候,先通过选择父级后再选择子级
  • 选择器部分支撑正则匹配,请参考java的正则语法,教程

节点信息类

说明

节点对象NodeInfo,可以通过获取getNodeInfo方法获取到节点信息的数组,节点包含的信息如下

  • id: 字符串,资源的ID
  • clz: 字符串,视图类名,例如 android.widget.TextView
  • pkg: 字符串,包名,例如com.xx
  • desc: 字符串,内容描述
  • text: 字符串,文本
  • checkable: 布尔型,是否可选中
  • checked: 布尔型,是否选中
  • clickable: 布尔型,是否可点击
  • enabled: 布尔型,是否启用
  • focusable: 布尔型,是否可获取焦点
  • focused: 布尔型,是否聚焦
  • longClickable: 布尔型,是否可长点击
  • scrollable: 布尔型,是否滚动
  • selected: 布尔型,是否被选择
  • childCount: 整型,子节点的个数
  • index: 整型 节点的索引
  • depth: 整型 节点的层级深度
  • drawingOrder: 整型 节点的绘制顺序
  • bounds: Rect型,空间对象
    • top: 整型,顶部位置
    • bottom: 整型,底部位置
    • left: 整型,左边位置
    • right: 整型,右边位置
  • visibleBounds: Rect型,可视空间对象
    • top: 整型,顶部位置
    • bottom: 整型,底部位置
    • left: 整型,左边位置
    • right: 整型,右边位置

text属性选择

全文本匹配

function main(){
    //获取选择器对象
    var selector = text("设置");
    click(selector);
}
main();

正则匹配


function main(){ 
  //获取选择器对象
  var selector = textMatch(".*设置.*");
  var result = click(selector);
  if (result) {
     toast("点击成功");
  } else {
    toast("点击失败");   
  }
}

main();

id 属性选择

全量匹配


function main(){ 
    //获取选择器对象
    var selector = id("com.xx:id/a1");
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

正则匹配


function main(){ 
    //获取选择器对象
    var selector = idMatch(".*id8.*");
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

clz 属性选择

全量匹配


function main(){ 
    //获取选择器对象
   var selector = clz("android.widget.TextView");
   var result = click(selector);
   if (result) {
       toast("点击成功");
   } else {
        toast("点击失败");
   }
}
main();

正则匹配


function main(){ 
    //获取选择器对象
   var selector = clzMatch(".*TextView.*");
   var result = click(selector);
   if (result) {
       toast("点击成功");
   } else {
       toast("点击失败");
   }
}
main();

pkg 属性选择

全量匹配


function main(){ 
   //获取选择器对象
   var selector = pkg("com.xx");
   var result = click(selector);
   if (result) {
       toast("点击成功");
   } else {
       toast("点击失败");
   }
}
main();

正则匹配


function main(){ 
   //获取选择器对象
   var selector = pkgMatch(".*tencent.*");
   var result = click(selector);
   if (result) {
       toast("点击成功");
   } else {
       toast("点击失败");
   }
}
main();

desc 文本属性选择

全量匹配


function main(){ 
   //获取选择器对象
   var selector = desc("我是描述");
   var result = click(selector);
   if (result) {
       toast("点击成功");
   } else {
       toast("点击失败");
   }
}
main();

正则匹配


function main(){ 
    //获取选择器对象
    var selector = descMatch(".*描述.*");
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main()

深度和绘制顺序匹配

drawingOrder


function main(){ 
  //获取选择器对象
  var selector = drawingOrder(1);
  var result = click(selector);
  if (result) {
      toast("点击成功");
  } else {
      toast("点击失败");
  }
}
main();

depth


function main(){ 
    //获取选择器对象
    var selector = depth(1);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }   
}
main();

其他匹配规则

visible 可视化属性匹配

  • 按照属性 visible 进行匹配
  • @param value 字符串
  • @return {S} 节点选择器

function main(){    
    var node = visible(true).getOneNodeInfo(1000);
    logd("node "+node);
}
main();

bounds 范围匹配

  • 按照属性 bounds 进行范围 *
  • @param left 范围左边数值
  • @param top 范围上边数值
  • @param right 范围右边数值
  • @param bottom 范围底边数值
  • @return {S} 节点选择器

function main(){    
    //获取选择器对象 0 - 800以内范围内的控件
    var selector = bounds(0,0,800,800);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

checkable


function main(){    
    //获取选择器对象
    var selector = checkable(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

checked


function main(){    
    //获取选择器对象
    var selector = checked(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();

clickable


function main(){ 
    //获取选择器对象
    var selector = clickable(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main(); 

longClickable


function main(){ 
    //获取选择器对象
    var selector = longClickable(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main(); 

scrollable


function main(){ 
    //获取选择器对象
    var selector = scrollable(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main(); 

focusable


function main(){ 
    //获取选择器对象
    var selector = focusable(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main(); 

enabled


function main(){ 
    //获取选择器对象
    var selector = enabled(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main(); 

focused


function main(){ 
    //获取选择器对象
    var selector = focused(true);
    var result = click(selector);
    if (result) {
        toast("点击成功");
    } else {
        toast("点击失败");
    }
}
main();