2016-06-01 2 views
1

SUDSライブラリを使用したロボットフレームワークを使用してSOAPメッセージのこの部分を作成するのは難しいです。Robot FrameworkでSUDSライブラリを使用してobjectTypesを使用してSoapメッセージを作成する

<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> 

だから、どのようにすることができますこれを宣言する "(ID){_ objectタイプ= ""} SUDSなどで?

${req}= Create WSDL Object ns19:RequestTypeSingle # may need namespace prefix here 
Set Wsdl Object Attribute ${req.ID} _objectType SomeType 

(継続質問):ombre42これに

おかげで、この(最初の質問は答えた)のように行うことができます。 これは私のリクエストの例で述べたように、これまでどおりに値を設定しません。この種の構文はうまくいくようですが、そうではありませんでした。これに関する素晴らしいアイデアですか?

"ValueError:オブジェクトはWSDLオブジェクト(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> 

答えて

0

XMLは、要素の代わりに属性(アンダースコアで名を接頭辞として表現されるプロパティに値を代入objectTypeの代わりに_objectTypeを使用する理由)。

${req}= Create WSDL Object RequestTypeSingle # may need namespace prefix here 
Set Wsdl Object Attribute ${req.ID} _objectType SomeType 
+0

動作しませんでした。 "Set Wsdlオブジェクト属性$ {object} ID $ {id}"は内部要素を作成し、それは許可されません。 RequestTypeSingleが定義するように、これを1行に記述する必要があります。 – Handeman

+0

「RequestTypeSingle」の定義が追加されました – Handeman

+0

IDは私が疑っているほど複雑なタイプではありません。私はそれに応じて私の答えを更新しました。スキーマを抜粋して既存のWSDLに含めることで、このソリューションをテストできました。私はあなたが必要とするように見える要求を生成することができました。 – ombre42

関連する問題