节点操作node
node元素节点操作类
通过元素搜索器nodes
获取到元素后,对元素进行一些操作和属性的获取。
# nodeSearch()
# 描述
获取元素搜索器nodes模块,可以对整个元素进行过滤搜索,详细参考nodes类
# 参数
参数名 | 类型 | 说明 |
---|---|---|
timeout | int | 超时时长,毫秒 |
# 返回值
参数名 | 类型 | 说明 |
---|---|---|
nodes | 节点xml信息数组 |
# 示例
寻找小米手机清理内存的按钮
/**
* @author 飞云
* @wechat imfeiyun
* @wiki http://aiwork.wiki
* @link http://www.feiyunjs.com
*/
auto.refresh()
auto.setDetailedModel()
var nodesObj = auto.nodeSearch(3000).className("android.view.View").id('com.android.systemui:id/clearAnimView');
printl(nodesObj)
if (nodesObj != '') {
var nodeObj = nodesObj.getNode(0);
if (nodeObj.clickable(true)) {
printl(nodeObj)
}
}
auto.setSimpleModel()
# getNodeSearch()
# 描述
获取元素搜索器nodes模块,可以对整个元素进行过滤搜索,详细参考nodes类
# 返回值
参数名 | 类型 | 说明 |
---|---|---|
nodes | 节点xml信息数组 |
# 示例
var nodeSearch = node.getNodeSearch();
# isVisibleToUser()
# 描述
组件在客户区是否可见。
# 参数
无
# 返回值
参数名 | 类型 | 说明 |
---|---|---|
boolean | 成功返回true ,失败返回false |
# 备注
用于筛选组件
这个判断不太严谨,有的组件即使不可见,也会返回
true
,属于框架的bug。最好结合其他方法一起进行判断
# 示例1
/**
* @author 飞云
* @wechat imfeiyun
* @wiki http://aiwork.wiki
* @link http://www.feiyunjs.com
*/
var nodesObj = auto.nodeSearch(3000).textMatch(".*音号.*").className("com.lynx.tasm.behavior.ui.LynxFlattenUI");
if (nodesObj != '') {
var nodeObj = nodesObj.getNode(0);
console.log('是否在客户区可见:' + nodeObj.isVisibleToUser())
}
# 示例2
封装一个自定义模块nodes.js
,在外部引用这个模块中的节点查找方法
/**
* 判断是否在消息列表顶部(某音)
* @author 飞云
* @wechat imfeiyun
* @wiki http://aiwork.wiki
* @link http://www.feiyunjs.com
*/
Import("public/nodes.js"); // 引用节点操作的自定义模块
// 定义一个节点数据表
let nodeList = [
{
className: 'android.widget.TextView',
testMatch: [
'^赞与收藏$',
'^评论与弹幕$',
],
clickable: false,
},
];
let nodeObj = NODES.getOneNode(nodeList, packageName); // 调用一个自定义模块中的查找节点的方法
if (nodeObj) {
if (nodeObj.isVisibleToUser()) {
printl('找到客户区节点')
} else {
printl('客户区节点不可视')
}
} else {
printl('未找到节点')
}
# node InitNode() 获取根元素
描述:获取根元素
参数:无
返回值类型:node
示例代码:
var node = node.InitNode();
# boolean click() 点击元素
描述:点击元素
参数:无
返回值类型:bool
示例代码:
var isClicked = node.click();
# boolean clickPoint() 点击元素坐标
描述:点击元素坐标,原理是先获取元素的坐标范围,然后通过模拟点击随机点一个坐标.可无视clickable=false的情况
参数:无
返回值类型:bool
示例代码:
var isClicked = node.clickPoint();
# boolean clipboardInput(String value) 剪切板输入
描述:剪切板输入
参数:
value:String,要输入的值
返回值类型:bool
示例代码:
var isInputSuccess = node.clipboardInput("hello world");
# String getXml() 获取元素的源码
描述:获取元素的源码。仅仅获取元素自身的源代码
参数:无。
返回值类型:String,表示元素的源码。
示例代码:
node.getXml();
# String getAllXml() 获取元素下的所有元素源码
描述:获取元素下的所有元素源码,获取包括自己和所有子元素的源代码
参数:无
返回值类型:String
示例代码:
var allXml = node.getAllXml();
# int getArea() 获取面积
描述:获取面积
参数:无
返回值类型:int
示例代码:
var area = node.getArea();
# double getAreaPercennt() 获取百分比面积
描述:获取面积占屏幕百分比
参数:无
返回值类型:float
示例代码:
var areaPercent = node.getAreaPercent();
# point getCenterPoint() 获取中心点坐标
描述:获取中心点坐标
参数:无
返回值类型:point
示例代码:
var centerPoint = node.getCenterPoint();
# node getChild(index) 获取指定子元素
描述:获取指定子元素
参数:
index:int,子元素索引
返回值类型:node
示例代码:
var childNode = node.getChild(0);
# int getChildCount() 获取子元素数量
描述:获取子元素数量
参数:无
返回值类型:int
示例代码:
var childCount = node.getChildCount();
# String getClassName() 获取类名
描述:获取类名
参数:无
返回值类型:String
示例代码:
var className = node.getClassName();
# String getDesc() 获取详细文本
描述:获取详细文本
参数:无
返回值类型:String
示例代码:
var desc = node.getDesc();
# String getID() 获取id
描述:获取id
参数:无
返回值类型:String
示例代码:
var id = node.getID();
# String getIndex() 获取索引
描述:获取索引属性
参数:无
返回值类型:String
示例代码:
var index = node.getIndex();
# node getParent()
描述:获取父元素
参数:无
返回值类型:node
示例代码:
var parentNode = node.getParent();
# String getText() 获取元素的文本内容
描述:获取元素的文本内容。
参数:无。
返回值类型:String,表示元素的文本内容。
示例代码:
node.getText();
# boolean input(String value) 输入文本
描述:在元素上输入文本。
参数:value,表示要输入的文本内容。
返回值类型:boolean,表示是否输入成功。
示例代码:
node.input("autoApp");
# boolean isCheckable() 判断元素是否可以勾选
描述:判断元素是否可以勾选。
参数:无。
返回值类型:boolean,表示元素是否可以勾选。
node.isCheckable();
# boolean isChecked() 判断元素是否已经被勾选
描述:判断元素是否已经被勾选。
参数:无。
返回值类型:boolean,表示元素是否已经被勾选。
示例代码:
node.isChecked();
# boolean isClickable() 判断元素是否可以被点击
描述:判断元素是否可以被点击。
参数:无。
返回值类型:boolean,表示元素是否可以被点击。
示例代码:
node.isClickable();
# boolean isFocusable() 判断元素是否可以获取焦点
描述:判断元素是否可以获取焦点。
参数:无。
返回值类型:boolean,表示元素是否可以获取焦点。
示例代码:
node.isFocusable();
# boolean isFocused() 判断元素是否已经获取了焦点
描述:判断元素是否已经获取了焦点。
参数:无。
返回值类型:boolean,表示元素是否已经获取了焦点。
示例代码:
node.isFocused();
# boolean isLongClickable() 判断元素是否可以长按
描述:判断元素是否可以长按。
参数:无。
返回值类型:boolean,表示元素是否可以长按。
示例代码:
node.isLongClickable();
# boolean isScrollable() 判断元素是否可以滚动
描述:判断元素是否可以滚动。
参数:无。
返回值类型:boolean,表示元素是否可以滚动。
示例代码:
node.isScrollable();
boolean longClick() 在元素上进行长按操作
描述:在元素上进行长按操作。
参数:无。
返回值类型:boolean,表示长按操作是否成功。
示例代码:
node.longClick();
# node nextNode() 获取下一个元素
描述:获取下一个元素。
参数:无。
返回值类型:node,表示下一个元素。
示例代码:
var nextNode=node.nextNode();
# node previousNode() 获取上一个元素
描述:获取上一个元素。
参数:无。
返回值类型:node,表示上一个元素。
示例代码:
var previousNode=node.previousNode();
# boolean swipNext() 向下滑动
描述:在元素上进行向下滑动操作。
参数:无。
返回值类型:boolean,表示向下滑动操作是否成功。
示例代码:
node.swipNext();
# boolean swipPervious() 向上滑动
描述:在元素上进行向上滑动操作。
参数:无。
返回值类型:boolean,表示向上滑动操作是否成功。
示例代码:
node.swipPervious();