You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Karate框架中遍历Webtable、存储行并处理匹配UI行

在Karate框架中遍历WebTable并处理符合条件的行

核心实现逻辑

  1. 定位并提取表格数据行:排除表头,精准定位表格内的所有数据行元素
  2. 封装每行数据:遍历每行,提取5列文本内容并封装为映射(Map)列表
  3. 筛选目标行:匹配指定列的条件,定位到对应的行元素
  4. 执行后续UI操作:对符合条件的行执行点击等操作

示例代码实现

假设目标表格的HTML结构如下(仅作参考):

<table id="business-table">
  <thead>
    <tr><th>ID</th><th>名称</th><th>状态</th><th>类型</th><th>操作</th></tr>
  </thead>
  <tbody>
    <tr><td>001</td><td>项目A</td><td>待处理</td><td>常规</td><td><button>操作</button></td></tr>
    <tr><td>002</td><td>项目B</td><td>已完成</td><td>紧急</td><td><button>操作</button></td></tr>
  </tbody>
</table>

1. 获取所有行并提取列数据

// 定位表格所有数据行(跳过表头行)
def rows = locateAll('table#business-table tbody tr')

// 遍历每行,提取5列内容并存储为Map列表
def rowDataList = karate.map(rows, function(row){
    def cols = locateAll(row, 'td')
    return {
        id: cols[0].text,
        name: cols[1].text,
        status: cols[2].text,
        type: cols[3].text,
        operation: cols[4].text
    }
})

2. 筛选目标行并执行点击

// 定义匹配条件:比如筛选"状态"列为"待处理"的行
def targetStatus = '待处理'

// 遍历数据列表,找到匹配的行并点击
karate.forEach(rowDataList, function(data, index){
    if (data.status == targetStatus) {
        // 获取对应行元素并执行点击
        rows[index].click()
        // 若仅需处理首个匹配项,可添加终止逻辑
        karate.set('stopLoop', false)
        return
    }
})

关键优化说明

  • 定位适配:需根据页面实际的表格ID、class或DOM层级调整定位表达式,确保元素定位准确
  • 性能优化:若表格行数较多,可直接通过JS脚本批量提取数据,减少UI交互开销:
    def rowDataList = scriptAll("""
        Array.from(document.querySelectorAll('table#business-table tbody tr')).map(tr => {
            const tds = tr.querySelectorAll('td');
            return {
                id: tds[0].innerText,
                name: tds[1].innerText,
                status: tds[2].innerText,
                type: tds[3].innerText,
                operation: tds[4].innerText
            };
        })
    """)
    
  • 多匹配处理:若需处理所有符合条件的行,移除循环内的终止逻辑即可

内容的提问来源于stack exchange,提问作者Damayanti Vinayakam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:53:43