2016-09-26 5 views
2

:어떻게 SOAPUI의 TestRunner getRunContext를 통해 자바로 반환하는 태그 지정 내가 현재 SOAPUI 응답 내의 개별 XML 태그를 액세스하기 위해 다음과 같은 일반적인 방법을 사용하고

public class SoapUIAPI { 
private String soapUITestCase; 
private String tagValue; 
private TestRunner runner; 

public String getWebServiceResponseTagValue (String tag){ 
    tagValue = runner.getRunContext().expand("${"+soapUITestCase+"#Response#//*:"+tag+"}"); 
    return tagValue; 
} 

runner.getRunContext().expand 거의 XPath 식을 가지고있는 것 같다 (하지만 꽤?) 내 문제는 내가 이런 걸 보이는 XML 응답이 있습니다 : 아직 runner.getRunContext().expand를 사용하는 동안,

<content> 
    <memNum>123456</memNum> 
    <displayName>Mr John Smith</displayName> 
    <prefName>John</prefName> 
    <dob>11/09/1948</dob> 
    <occDesc>Truck Driver</occDesc> 
    <IRDNumber>19-211-314</IRDNumber> 
    <contactDetails> 
    <contact> 
     <MEMBER_PHONE_ID>123456</MEMBER_PHONE_ID> 
     <contactType>Mobile 2</contactType> 
     <countryCode>(+64)</countryCode> 
     <std>021</std> 
     <number>54545454</number> 
    </contact> 
    <contact> 
     <MEMBER_PHONE_ID>34567</MEMBER_PHONE_ID> 
     <contactType>Business Phone</contactType> 
     <countryCode>(+36)</countryCode> 
     <std>04</std> 
     <number>8756845</number> 
     <ext/> 
    </contact> 
    <contact> 
     <MEMBER_PHONE_ID>45678</MEMBER_PHONE_ID> 
     <contactType>Preferred Email 1</contactType> 
     <email>[email protected]</email> 
    </contact> 
    <contact> 
     <MEMBER_PHONE_ID>56789</MEMBER_PHONE_ID> 
     <contactType>Preferred Email 2</contactType> 
     <email>[email protected]</email> 
    </contact> 
    </contactDetails> 
    <branch>New York</branch> 
    <adviser>Warren Duck</adviser> 
</content> 

는 어떻게 반환 할 <email> 태그를 지정할 수 있습니까?

다른 사람들이 동의하지 않을 수도 있지만 SOAPUI API 설명서가 부족한 것 같습니다.

+0

이 경우 특정 전자 메일을 검색하려면 참조로 다른 필드 값을 지정해야합니다. 예를 들면 :'회원 전화 번호가 45678이거나'std가 021 인 곳에서 이메일을 검색하십시오. ', – Rao

답변

1

필요한 것은 오른쪽으로 xpath이 필요합니다.

사용할 수있는 연락처 목록이 있으므로 올바른 이메일을 수신하려면 다른 관련 요소를 참조해야합니다. 예를 들어

:
이 - 회원 전화 ID 사용 : MEMBER_PHONE_ID이 이, XPath는 같이 보일 것입니다 연락처의 이메일을 검색 할 수 : 그래서
//MEMBER_PHONE_ID[contains(text(),'56789')]/following-sibling::email/text()

, 추가 합격해야 특정 이메일을 얻기위한 정보.

이러한 이격 tag

String value = "${"+soapUITestCase+"#Response#//" + relativeTag + "[contains(text(),'" + relativeTagValue+"')]/following-sibling::" + tag + "/text()}"; 

기존의 relativeTag (MEMBER_PHONE_ID) relativeTagValue (56789)로 value의 출력 될 것이다 (가정 soapUITestCase의 값 Test1을이다)

${Test1#Response#//MEMBER_PHONE_ID[contains(text(),'56789')]/following-sibling::tag/text()} 

그런 다음 value을 호출하여 메소드를 확장합니다.

당신이 응답에 관련된 모든 네임 스페이스가있는 경우 처리 할 필요가
tagValue = runner.getRunContext().expand(value); 

주, 어떤 namcespaces가 제공하는 현재의 응답이 없습니다.

+0

고마워요 @Rao 방금 시도해 봤어야했는데'// * : email'과 같이 xPath가 아닌 것으로 가정했습니다. 유효한 xPath로 보이지만 (작동하지만). 귀하의 솔루션은 완벽하게 작동합니다. – AutomationTester

+0

@AutomationTester, 도움이되었음을 기쁘게 생각합니다. – Rao