当尝试执行以下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}