EasyClick中使用
简介
- 在EasyClick中,层级结构与html有很大的区别
- 如下图,EasyClick中所有的
节点名
均为node
节点属性
均为固定的几个属性,如id
,text
,name
,index
,bounds
等,不同产品可能有细微差别- 如下
基本语法
// 定义xpath选择器
let selector = xpath("//node[@id='msg_title']")
// 查找单个节点
let node = selector.getOneNodeInfo(0)
if (node) {
logd(JSON.stringify(node))
logd(node.text)
}
//查找多个节点
let nodes = selector.getNodeInfo(0);
if (nodes) {
logd(JSON.stringify(nodes))
logd(nodes.length)
for (let i = 0; i < nodes.length; i++) {
logd(nodes[i].text)
}
}
xpath定义
- 由于EasyClick获取的节点树比较深,因此起始一般使用相对路径
单属性
xpath("//node[@id='xxx']")
多属性
// 属性同时成立
xpath("//node[@id='msg_title' and text='老冷编程学院']")
// 其中一个属性即可
xpath("//node[@id='msg_title' or id='msg_avatar']")
多条件
- 同时查找多个路径
// 满足任意一个条件即可
xpath("//node[@id='msg_title'] | //node[@id='msg_avatar']")
级联
子节点
- 使用
/
,表示下级子节点
xpath("//node[@id='xxx']/node[@id='xxx']/node[@id='xxx']")
子孙节点
- 使用
//
,表示下级子孙节点均可
xpath("//node[@id='xxx']//node[@id='xxx']")
父节点
- 使用
/..
xpath("//node[@id='xxx']/..")
兄弟节点
- 先找父节点,再找父节点的子节点
- 如果有多个相同结构节点,会返回所有符合条件节点
xpath("//node[@id='xxx']/../node")
下标
- 下标从
1
开始
xpath("//node[@id='xxx'][1]")
函数
- xpath不支持正则
contains 属性包含
xpath("//node[contains(@id, 'xxx')]")
starts-with 以属性开始
xpath("//node[starts-with(@id, 'xxx')]")