当前位置: 首页 > 知识库问答 >
问题:

如何在groovy中使用context.expand获取子节点?

芮雪风
2023-03-14

每个人

使用SoapUI 5.2.1和Groovy TestCase有2个测试步骤:

  1. SOAP请求“创建”
  2. Groovy脚本

请求内:

<soapenv:Envelope ... >
 <soapenv:Header/>
 <soapenv:Body>
  <ban:transactions>
   <session>x</session>
   <type>y</type>
  </ban:transactions>
 </soapenv:Body>
</soapenv:Envelope ... >

内部脚本:

def xml = context.expand('${create#request#//ban:transactions}')

此脚本返回:

  <ban:transactions>
   <session>x</session>
   <type>y</type>
  </ban:transactions>

我应该在脚本中更改什么,以便脚本可以返回我:

   <session>x</session>
   <type>y</type>

共有1个答案

苏健柏
2023-03-14

假设您的XML是,我们将提取节点体下的数据

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<hello>oye1</hello>
<ok>test</ok>
 <hello>oye2</hello>
<ok>test2</ok>
</Body>
</Envelope>

下面的groovy代码可以从提及其上方节点的xml中提取节点。因此,这里我们试图提取标记下的节点

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder("testStepName#Response")
def  responseXml=holder.getXmlObject()
String xmlObj=responseXml.toString()
String [] responseXmlObj=xmlObj.split('<Body>')[1].split('</Body>')
log.info responseXmlObj[0]

输出如下

Thu Nov 23 12:38:05 GMT+05:30 2017:INFO:
<hello>oye1</hello>
<ok>test</ok>
<hello>oye2</hello>
<ok>test2</ok>

您需要使用具有响应的步骤的名称更改testStepName

 类似资料:
  • 问题内容: 我在Jenkins中有一个管道作业,我想知道它在其上运行的节点的名称。有没有办法从作业的Groovy脚本中获取节点名称? 我尝试了以下代码: 错误是: 我也尝试过这个: 但结果是“”。 问题答案: 有一个环境变量“ NODE_NAME”具有此功能。 您可以像这样访问它: 在编辑管道作业时,可以转到“管道语法”帮助链接(页面左侧),然后找到“全局变量”部分,然后单击“全局变量参考”,以找

  • 我想使用Xpath提取父节点和子节点之间的vale。如何做到这一点? 如何将文本值输出为“要提取的值”?它不应该是“要提取密钥的值”“关键”应该被忽略。

  • 我可以使用以下方法获取第一个

  • 我有一个测试步骤,其中包含两个断言。 非SOAP错误 包含。条件是响应应包含“消息发送成功” 现在我有一个Groovy脚本,从那里我执行这个测试步骤。使用这个Groovy脚本,我需要打印断言名称、值和状态。以下是我编写的代码: 但在输出中,它显示如下: 如您所见,我可以打印断言名称和状态,但不能打印“包含”断言的值。请帮助我如何获取特定断言的值。 提前谢谢。

  • 问题内容: 在这里,我将标签’snap2’作为输入,并且需要获取其子级标签(snap3,sddsds)作为输出。如何在Groovy中做到这一点?我搜索了很多东西,但找不到解决方案。 如果我能从你们中得到任何建议,那就太好了。 问题答案: 假设您的json在String中,则可以执行以下操作:

  • 问题内容: 我想从IMAP4服务器获取整个邮件。在python文档中,如果发现此代码有效: 我想知道我是否总是可以相信data [0] [1]返回消息的主体。当我运行“ RFC822.SIZE”时,我只有一个字符串而不是一个元组。 我已经浏览了rfc1730,但无法弄清楚“ RFC822”的正确响应结构。也很难从imaplib文档中得知获取结果的结构。 这是我在获取时得到的: 但是当我获取时,我得