【发布时间】:2016-06-01 11:31:58
【问题描述】:
我正在努力使用带有 SUDS 库的机器人框架来创建肥皂消息的这一部分。
<ns1:Request>
<ns0:ID objectType="SomeType">Value</ns0:ID>
</ns1:Request>
如果我这样做,那么我得到了我需要的所有东西,但不是 objectType。
${object}= Create Wsdl Object ns19:RequestTypeSingle
Set Wsdl Object Attribute ${object} ID 1234
输出
<ns1:Request>
<ns0:ID>1234</ns0:ID>
</ns1:Request>
如果我检查我的 ns19:RequestTypeSingle 想要什么,我会得到这个:
${object} = (RequestTypeSingle){
ID =
(ID){
_objectType = ""
}
}
“RequestTypeSingle”定义
<xs:complexType name="RequestTypeSingle">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="ID" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="objectType" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
那么我怎样才能用 SUDS 或其他方式声明这个 "(ID){_objectType = ""}?
感谢 ombre42,这可以像这样完成(回答第一个问题):
${req}= Create WSDL Object ns19:RequestTypeSingle # may need namespace prefix here
Set Wsdl Object Attribute ${req.ID} _objectType SomeType
(继续问题)。 这不会像我在请求示例中提到的那样设置值。看起来这种语法会起作用,但它没有。关于这个有什么好主意吗?
这会报错:“ValueError: Object must be a WSDL object (suds.sudsobject.Object)。”
${req}= Create WSDL Object ns19:RequestTypeSingle # may need namespace prefix here
Set Wsdl Object Attribute ${req} ID 1234
Set Wsdl Object Attribute ${req.ID} _objectType SomeType
这将覆盖第一个 _objectType 定义。
${req}= Create WSDL Object ns19:RequestTypeSingle # may need namespace prefix here
Set Wsdl Object Attribute ${req.ID} _objectType SomeType
Set Wsdl Object Attribute ${req} ID 1234
我所说的覆盖是指我明白了:
<ns1:Request>
<ns0:ID>1234</ns0:ID>
</ns1:Request>
【问题讨论】:
标签: soap robotframework suds