在ReadyAPI中如何用XPath提取XML所有ID_Question节点值?
在ReadyAPI中提取JDBC响应里所有ID_Question的值
问题说明
你用的XPath表达式//*:ID_Question本身能匹配所有ID_Question元素,但ReadyAPI默认的属性传递只会返回第一个匹配结果,需要调整方法来获取全部值。
解决方法
方法一:用Groovy脚本提取(推荐)
在JDBC请求后添加Groovy Script测试步骤,粘贴以下代码:
// 替换成你的JDBC请求步骤名称 def jdbcResponse = context.expand('${你的JDBC请求名称#Response}') def xmlData = new XmlSlurper().parseText(jdbcResponse) // 提取所有ID_Question的文本值,得到列表 def idList = xmlData.ResultSet.Row.ID_Question*.text() // 转为逗号分隔的字符串(适配多数REST请求的参数格式) def idStr = idList.join(',') // 存入测试用例属性,供后续REST请求调用 context.testCase.setPropertyValue('ALL_ID_QUESTIONS', idStr) // 日志打印验证结果 log.info("提取的ID列表:${idStr}")
后续REST请求中,直接用${#TestCase#ALL_ID_QUESTIONS}引用即可。
方法二:调整属性传递的匹配规则
如果你的ReadyAPI版本支持,可直接在属性传递中设置:
- 打开JDBC请求的属性传递面板
- XPath表达式保持
//*:ID_Question - 在匹配规则下拉框中选择所有结果(或类似表述)
- 设置分隔符(比如逗号),这样返回的就是所有值拼接后的字符串
验证
运行测试步骤后,查看ReadyAPI的日志面板,确认是否正确提取了所有ID_Question的值。
内容的提问来源于stack exchange,提问作者amlbenmansour
相关产品推荐
相关产品推荐

