簡體   English   中英

在soapui groovy腳本中從xml獲取文本值

[英]Get text value from xml in soapui groovy script

我的任務是從soapui中的xml獲取值,以便在序列中創建下一個測試。

我使用groovy腳本

我的目標是在標簽內獲取文字。 它很容易識別,因為它是base64編碼的字符串。

def project = testRunner.testCase.testSuite.project ;
def tcase = project.testSuites["ChangeRetentionByCopyDemoSuite"].testCases["Milestone2"] ; 
def tstep = tcase.getTestStepByName("getDocuments - GetContentURLRequest");

def responseTestSuite1 = tstep.getPropertyValue("response");

log.info(responseTestSuite1.toString());

def gutils = new com.eviware.soapui.support.GroovyUtils( context );
def holder = gutils.getXmlHolder("$responseTestSuite1");

def byteResponse = holder.getNodeValue("/S:Envelope/S:Body/g:getDocumentsResponse/text()");

log.info(byteResponse);

xml在getDocuments - GetContentURLRequest中進行響應

  <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header> <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <Created>2015-09-15T13:57:50.844Z</Created> <Expires>2015-09-16T13:57:50.844Z</Expires> </Timestamp> </Security> </S:Header> <S:Body> <getDocumentsResponse xmlns="http://asg.com/2009/03/schemas/tciadapters/getdocument"> <result> <operationStatus> <severity>INFO</severity> <reasonCode>A300</reasonCode> <messageText>All requests completed without errors.</messageText> </operationStatus> <documents> <DocumentData> <docId> <NameValuePair> <keyName>cmis:objectId</keyName> <keyValue>idd_48716F01-F5F7-4702-AC80-4EC70C949121</keyValue> </NameValuePair> </docId> <status xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> <content> <ContentSegment> <data>aHR0cHM6Ly91c3J5ZTh0Y2k0bTAyLmFzZy5jb206NzQ0My9jbWlzYWRhcHRlci9nZXRjb250ZW50P3VzZXJpZD1kZXY2ZGV2aWQmcGFzc3dvcmQ9ZGV2ZWxvcCUyMzEmY21pc19pbnN0YW5jZT1GaWxlTmV0UDgrLStBdG9tUHViJnJlcG9zaXRvcnk9ZmlsZW5ldG9iamVjdHN0b3JlMSZjbWlzOm9iamVjdElkPWlkZF80ODcxNkYwMS1GNUY3LTQ3MDItQUM4MC00RUM3MEM5NDkxMjE=</data> </ContentSegment> </content> <metadata/> <properties> <subrange xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> <format xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> <supportedFormats/> </properties> <retention/> </DocumentData> </documents> </result> </getDocumentsResponse> </S:Body> </S:Envelope> 

不幸的是,在運行最后一行代碼時我遇到了異常

如果要在標記“messageText”中提取文本,則可以指定父節點和子節點,即將最后一行修改為

def byteResponse = holder.getNodeValue("//*:operationStatus//*:messageText")

// since there is only one tag named "messageText" in the entire response, you could use this also

def byteResponse = holder.getNodeValue("//*:messageText")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM