我正在尝试使用groovy构建测试自动化脚本。我的输入模板就像myXML变量
我正在从excel文件读取输入数据并替换值并通过SOAPUI触发请求。
我的代码就像这样
def myXML ='''<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="xyz.org/common" xmlns:fin="xyz.org/finance">
<fin:myBalance>
<com:loginName>test</com:loginName>
<fin:params>
<fin:name value="username"/>
<fin:Id value="12345"/>
<fin:nickname value="usr1"/>
</fin:params>
</fin:myBalance>
</soapenv:Body> '''
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def reqHolder = groovyUtils.getXmlHolder("InputReq#Request")
reqHolder.namespaces['soapenv']= 'http://schemas.xmlsoap.org/soap/envelope/';
reqHolder.namespaces['com']= 'xyz.org/common';
reqHolder.namespaces['fin']= 'xyz.org/common';
reqHolder.setNodeValue("//fin:myBalance[1]/${newTag.getContents()}[1]",
"${newValue.getContents()}");
如果我想更改节点值,这可以完美地运行。但我无法找到使用reqHolder更改属性的方法。说我想改变 fin:Id值=&#34; 12345&#34;到&#34; 6789&#34;
有没有办法改变?
答案 0 :(得分:1)
您可以尝试在XmlParser中内置Groovy,而不是使用SoapUI的API。有了它,你可以改变属性。例如:
def xml = '<root><one a1="uno!"/><two>Some text!</two></root>'
def rootNode = new XmlParser().parseText(xml)
assert rootNode.one[0].@a1 == 'uno!'
来源:http://docs.groovy-lang.org/latest/html/api/groovy/util/XmlParser.html
您需要做的是获取xm,例如:
def response = context.testCase.testSteps['Properties'].properties['response'].value
此处有更多XML处理提示:http://www.robert-nemet.com/2011/11/groovy-xml-parsing-in-soapui.html
获取XML的另一种方法: Groovy script to get the request xml
您可以在此处找到有关Groovy XML处理的更多信息: http://groovy-lang.org/processing-xml.html