我已经运行了SOAP API请求,并使用机器人框架获取了如下响应。
(reply){
return = "PGP-98-Sq0awmdslfjsdssdlsifTvZUORTLe1fgVeUwaolR14QS"
}
我想从响应XML检索值PGP-98-Sq0awmdslfjsdssdlsifTvZUORTLe1fgVeUwaolR14QS。我尝试使用命令
来获取值${token}= Set Variable ${API_response_Data.return}
但是会引发错误
SyntaxError: unexpected EOF while parsing (<string>, line 1)
来自SOAP UI工具的实际响应如下所示(这仅供参考)。
<soapenv:Envelope xmlns:soapenv="something" xmlns:xsd="something">
<soapenv:Body>
<ns1:response xmlns:ns1="http://something.com">
<return>PGP-98-Sq0awmdslfjsdssdlsifTvZUORTLe1fgVeUwaolR14QS</return>
</ns1:response>
</soapenv:Body>
</soapenv:Envelope>
以及当我使用
${Token}= Get Element ${API_response_Data} .//*return
Log ${Token.text}
请让我知道如何从返回标记中提取值?
答案 0 :(得分:1)
您可以使用机器人框架的XML library来解析响应XML,然后获取特定元素的文本。例如:
Demo
${root}= Parse XML soap_res.xml
${return}= Get Element ${root} .//*return
Log ${return.text}
Get Element
关键字返回一个XML元素对象,您需要其text
属性。输出如下:
答案 1 :(得分:1)
SudsLibrary取决于Suds模块。遗憾的是,该模块不再维护,并且随着时间的流逝,该模块的局限性越来越清晰。
在您的情况下,返回的对象很难使用。这就是为什么我更愿意返回XML响应并使用标准XML库自己处理它的原因。
在发送请求之前,您可以使用Set Return XML关键字启用此功能。然后按照XML库中关键字Parse XML的示例获取实际值