跳到主要内容

EasyClick中使用

简介

  • 在EasyClick中,层级结构与html有很大的区别
  • 如下图,EasyClick中所有的
  • 节点名 均为 node
  • 节点属性 均为固定的几个属性,如 id, text, name, index, bounds 等,不同产品可能有细微差别
    • 如下

ec-1

基本语法

// 定义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')]")