如何在robot框架中读取XML响应元素?

如何在robot框架中读取XML响应元素?,xml,robotframework,parsexml,Xml,Robotframework,Parsexml,我已经运行了SOAP API请求,并使用robot框架得到如下响应 (reply){ return = "PGP-98-Sq0awmdslfjsdssdlsifTvZUORTLe1fgVeUwaolR14QS" } 我想从响应XML中检索值PGP-98-Sq0awmdslfjsdssdlsifTvZUORTLe1fgVeUwaolR14QS。我已尝试使用命令获取值 ${token}=Set变量${API\u response\u Data.return} 但它抛出了一个错误 Synta

我已经运行了SOAP API请求,并使用robot框架得到如下响应

(reply){
   return = "PGP-98-Sq0awmdslfjsdssdlsifTvZUORTLe1fgVeUwaolR14QS"
}
我想从响应XML中检索值PGP-98-Sq0awmdslfjsdssdlsifTvZUORTLe1fgVeUwaolR14QS。我已尝试使用命令获取值

${token}=Set变量${API\u response\u Data.return}
但它抛出了一个错误

SyntaxError: unexpected EOF while parsing (<string>, line 1)
我得到下面的错误。


请告诉我如何从返回标记中提取值?

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

Demo
${root}=解析XML soap\u res.XML
${return}=Get元素${root}.//*return
日志${return.text}
Get元素
关键字返回一个XML元素对象,您需要它的
text
属性。输出如下:


SudsLibrary取决于Suds模块。遗憾的是,该模块不再维护,随着时间的推移,该模块的局限性越来越明显

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


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

您是否使用已经可用的Robot Framework库发送和接收SOAP消息,如SudsLibrary?是的,我使用SudsLibrary@A.KootstraI使用您建议的关键字时会出现错误。我修改了问题,添加了使用这些关键字时出现的错误。请帮助解决此问题。@JCDani
${API\u response\u Data}
变量不是XML,因此我的建议不起作用。如果您可以将来自soapui的实际响应作为包含所有标记的XML传递,那么它应该可以工作。库特拉有一个这样做的建议,它对我很有效。谢谢你的帮助。我现在可以拿到代币了。
 ${Token}=    Get Element    ${API_response_Data}    .//*return
    Log    ${Token.text}