机器人框架SudsLibrary在调用"Call Soap Method"时生成附加元素



当尝试执行以下robotscript时,它向登录元素添加了额外的元素。

Library           Selenium2Library
Library           Collections
Library           String
Library           uuid
Library           Dialogs
Library           SudsLibrary

Create Soap Client      http://xxxxxxxxx:18080/xxxxx_b/xxx?wsdl
${dbl array}=   Create Wsdl Object      logIn
Set Wsdl Object Attribute   ${dbl array}    username    xxx
Set Wsdl Object Attribute   ${dbl array}    password    xxxx
${result}=  Call Soap Method    logIn       ${dbl array}
log to consol       ${result}

原始请求格式

<soapenv:Envelope xmlns:soapenv="http://xxxxxxxxxxxxx/x/x/" xmlns:ws="http://xxxxxxxxxxxxxxx/">
<soapenv:Header/>
<soapenv:Body>
<ws:logIn>
<!--Optional:-->
<username>xxx</username>
<!--Optional:-->
<password>xxx</password>
</ws:logIn>
</soapenv:Body>
</soapenv:Envelope>

生成的代码:

<SOAP-ENV:Envelope xmlns:ns0="http://xxxxxxxxxxxxxx/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="h
ttp://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns1:Body>
<ns0:logIn>
<username>
<username>xxx</username>
<password>xxx</password>
</username>
</ns0:logIn>
</ns1:Body>
</SOAP-ENV:Envelope>

如何删除额外的用户名标签?

<username>
<username>xxx</username>
<password>xxx</password>
</username>

问题很可能是 login 方法不会将其参数包装在对象中,而是直接获取。Suds 为所有方法创建类型,但调用方法不需要这些类型。 如果您查看创建 Soap 客户端的输出,您可能会看到类似loginIn(用户名、密码(的内容。这意味着你直接传递参数,而不是在某个对象中传递。

Library           Selenium2Library
Library           Collections
Library           String
Library           uuid
Library           Dialogs
Library           SudsLibrary

Create Soap Client      http://xxxxxxxxx:18080/xxxxx_b/xxx?wsdl
${result}=  Call Soap Method    logIn       some_username    some_password
log to console       ${result}

相关内容

最新更新