saharaqs 发表于 2013-10-17 14:11:28

loadrunner测试webservices时服务器返回的xml中的数据关联问题

webservices协议的脚本,执行后的服务器应答信息如下:

- <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
- <soap:Body>
- <ns2:sendAuditReportResponse xmlns:ns2="http://service.flowchain.sai.si.mwr.gov.cn/">
<return><resps> <id>5a86946f38264cde9418779ccbacc193</id> <resp> <origin>MWR</origin> <destination>HB</destination> <status>200</status> <message>发送节点应用集成支撑软件接收报文成功</message> <date>2013-10-17 14:00:07</date> </resp> </resps></return>
</ns2:sendAuditReportResponse>
</soap:Body>
</soap:Envelope>

用lr_xml_get_values函数获取其中的id值:

        lr_xml_get_values("XML={response}",
                          "FastQuery=/Envelope/Body/sendAuditReportResponse/return/resps/id",
                          "ValueParam=ParamValue_return",
                          LAST);

这样执行脚本时会报错:
No matches were found for the specified query: "/Envelope/Body/sendAuditReportResponse/return<resps>".

如果把lr_xml_get_values函数修改为

        lr_xml_get_values("XML={response}",
                          "FastQuery=/Envelope/Body/sendAuditReportResponse/return",
                          "ValueParam=ParamValue_return",
                          LAST);

就可以正确执行,但是取到的数据是整个<return>中的内容,怎么才能把其中的id值分离出来?

云层 发表于 2013-10-18 11:30:36

我写过类似的案例,这里给你的方向

1.直接取xml应该是可以的,但是你现在貌似不成功
2.你去了return那么结果就不是完整的xml了,所以你可以为这个结果补一个xml的根,然后再lr_xml_get_value就行了

ching88 发表于 2013-10-28 11:18:22

学习了,
页: [1]
查看完整版本: loadrunner测试webservices时服务器返回的xml中的数据关联问题