选择器
# 选择器对象
选择器对象是支持级联选择,可以在无法直接选择到元素的时候,先通过选择父级后再选择子级
选择器部分支撑正则匹配,请参考java的正则语法
# text 属性选择
## text(content)
全文本匹配
```js
function main(){
//获取选择器对象
var selector = text("设置");
click(selector);
}
main();
```
## textMatch(content)
正则匹配
```js
function main(){
//获取选择器对象
var selector = textMatch(".*设置.*");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
# desc 文本属性选择
## desc(content)
全量匹配
```js
function main(){
//获取选择器对象
var selector = desc("我是描述");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## descMatch(content)
正则匹配
```js
function main(){
//获取选择器对象
var selector = descMatch(".*描述.*");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main()
```
# id 属性选择
## id(content)
全量匹配
```js
function main(){
//获取选择器对象
var selector = id("com.xx:id/a1");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## idMatch(content)
正则匹配
```js
function main(){
//获取选择器对象
var selector = idMatch(".*id8.*");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
# className 属性选择
## clz(content)
全量匹配
```js
function main(){
//获取选择器对象
var selector = clz("android.widget.TextView");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## clzMatch(content)
正则匹配
```js
function main(){
//获取选择器对象
var selector = clzMatch(".*TextView.*");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
# packageName 属性选择
## pkg(content)
全量匹配
```js
function main(){
//获取选择器对象
var selector = pkg("com.xx");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## pkgMatch(content)
正则匹配
```js
function main(){
//获取选择器对象
var selector = pkgMatch(".*tencent.*");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
# 深度和绘制顺序匹配
## depth(index)
```js
function main(){
//获取选择器对象
var selector = depth(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## drawingOrder(index)
index从1开始
```js
function main(){
//获取选择器对象
var selector = drawingOrder(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
#### 点击TAB
```js
let selector = clz('androidx.appcompat.app.ActionBar$Tab').drawingOrder(1).clickable(true);
logd(click(selector));
```
# 其他匹配规则
## visible(true)
按照可视化属性 visible 进行匹配
@param boolean 是否可视
@return {S} 节点选择器
```js
function main(){
var node = visible(true).getOneNodeInfo(1000);
logd("node "+node);
}
main();
```
## clickable(true)
```js
function main(){
//获取选择器对象
var selector = clickable(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## checkable(true)
```js
function main(){
//获取选择器对象
var selector = checkable(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## editable(true)
是否可输入内容
## checked(true)
```js
function main(){
//获取选择器对象
var selector = checked(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## longClickable(true)
```js
function main(){
//获取选择器对象
var selector = longClickable(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## selected(true)
```js
function main(){
//获取选择器对象
var selector = selected(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## scrollable(true)
```js
function main(){
//获取选择器对象
var selector = scrollable(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## focusable(true)
```js
function main(){
//获取选择器对象
var selector = focusable(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## enabled(true)
```js
function main(){
//获取选择器对象
var selector = enabled(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## focused(true)
```js
function main(){
//获取选择器对象
var selector = focused(true);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## index(num)
节点索引,num从0开始
```js
function main(){
//获取选择器对象
var selector = index(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## bounds(left,top,right,bottom)
按照属性 bounds 进行范围
@param left 范围左边数值
@param top 范围上边数值
@param right 范围右边数值
@param bottom 范围底边数值
@return {S} 节点选择器
```js
function main(){
//获取选择器对象 0 - 800以内范围内的控件
var selector = bounds(0,0,800,800);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## childCount(index)
```js
function main(){
//获取选择器对象
var selector = childCount(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## row(index)
```js
function main(){
//获取选择器对象
var selector = row(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## column(index)
```js
function main(){
//获取选择器对象
var selector = column(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## rowSpan(index)
```js
function main(){
//获取选择器对象
var selector = rowSpan(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## columnSpan(index)
```js
function main(){
//获取选择器对象
var selector = columnSpan(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## rowCount(index)
```js
function main(){
//获取选择器对象
var selector = rowCount(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## columnCount(index)
```js
function main(){
//获取选择器对象
var selector = columnCount(1);
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## 级联匹配
```js
function main(){
//获取选择器对象
//选择 父级为android.widget.ScrollView下的子节点clz=android.widget.CheckBox所有节点
var selector = clz("android.widget.ScrollView")
.child()
.clz("android.widget.CheckBox");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```
## 多属性匹配
```js
function main(){
//获取选择器对象,
//选择包含"选择器"并且checked=true并且类名=android.widget.CheckBox的元素
var selector = text(".*选择器.*")
.checked(true)
.clz("android.widget.CheckBox");
var result = click(selector);
if (result) {
toast("点击成功");
} else {
toast("点击失败");
}
}
main();
```