繁体   English   中英

如何在机器人框架中读取XML响应元素?

[英]How to read the XML response element in robot framework?

我已经运行了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>

我使用了Parse XML关键字,但出现以下错误。 在此处输入图片说明

当我使用

 ${Token}=    Get Element    ${API_response_Data}    .//*return
    Log    ${Token.text}

我收到以下错误。 在此处输入图片说明

请让我知道如何从返回标记中提取值?

您可以使用机器人框架的XML库来解析响应XML,然后获取特定元素的文本。 例如:

Demo
    ${root}=    Parse XML   soap_res.xml
    ${return}=  Get Element     ${root}     .//*return
    Log     ${return.text}

Get Element关键字返回一个XML元素对象,您需要它的text属性。 输出如下:

在此处输入图片说明

SudsLibrary取决于Suds模块。 遗憾的是,该模块不再维护,并且随着时间的流逝,该模块的局限性越来越清晰。

在您的情况下,返回的对象很难使用。 这就是为什么我更愿意返回XML响应并使用标准XML库自己处理它的原因。

在发送请求之前,您可以使用Set Return XML关键字启用此功能。 然后按照XML库中的示例使用关键字Parse XML来获取实际值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM