在TestComplete Web服务测试中获取cookie

时间:2014-08-20 04:51:32

标签: web-services testcomplete

我正在调用WCF服务方法并尝试读取以下事件的响应 - function GeneralEvents_OnWebServiceResponse(Sender,Response,Helper,ResponseInfo) 当我将Response.Text或Response.xml值显示在日志中时(在代码中进一步使用它们之前),分别显示以下内容 -

Response.Text http://asp.net/ApplicationServices/v200/AuthenticationService/LoginResponseurn:uuid:17d10877-6514-4056-bb7f-a4c1510279c5true

Response.xml

<?xml version="1.0" ?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
    <s:Header>
        <a:Action s:mustUnderstand="1">http://asp.net/ApplicationServices/v200/AuthenticationService/LoginResponse</a:Action>
        <a:RelatesTo>urn:uuid:17d10877-6514-4056-bb7f-a4c1510279c5</a:RelatesTo>
    </s:Header>
    <s:Body>
        <LoginResponse xmlns="http://asp.net/ApplicationServices/v200">
            <LoginResult>true</LoginResult>
        </LoginResponse>
    </s:Body>
</s:Envelope>

但是,在SilverLight应用程序的Web服务上运行此示例的Fiddler工具中显示的响应包含有关cookie的详细信息 -

Cache-Control: private
Content-Length: 189
Content-Type: application/soap+msbin1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Set-Cookie: .ASPXAUTH=9A321F31B667231925A19F3F433C24529CD9DE9283745DF8C515E12A679C63E3A0B59A7054B6157E24279965080981E9BCD632100E23B5CFDC02455BA4193552C67B2FC6E86EF258E205E04D68AF15FAF80223DE231E3C720DC295B89458888212EF1CBEC288FE5FFC70D7E22A5F932868263AA15B8D75EAAF4581652389798193D1FA216BBC8492FABF0F29906B3A5F; expires=Thu, 18-Sep-2014 14:18:22 GMT; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 19 Aug 2014 14:18:22 GMT

如何将此cookie提取到TestComplete脚本中,以便作为后续服务调用标题的一部分进行传递?请建议。

TestComplete版本10.10 SilverLight 5.0版

-Siddharth

1 个答案:

答案 0 :(得分:1)

更新:因此流量是二进制SOAP(application / soap + msbin1)。我不确定XMLHTTPRequest可以处理它。

既然您正在使用Fiddler,也许您可​​以使用Fiddler为TestComplete的WebServices调用进行关联?

但我没有尝试过,所以我不知道它是否会起作用。


WebServices插件不允许您获取响应标头。

如果您以其他方式调用Web服务,则只能使用XMLHTTPRequest来获取响应标头。

function Test()
{
  var strUrl = "http://endpoint_URL";

  var oHTTP = Sys.OleObject("MSXML2.XMLHTTP");
  oHTTP.open("POST", strUrl, false);
  oHTTP.setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8");

  var strRequestBody = // SOAP request body
    '<?xml version="1.0" encoding="utf-8"?>' +
    '<s:Envelope ...' +
    '</s:Envelope>';

  oHTTP.send(strRequestBody);

  while ((oHTTP.readyState != 4) && (oHTTP.readyState != 'complete')) { 
    Delay(100);
  }

  var strCookie = oHTTP.getResponseHeader("Set-Cookie");
  Log.Message(strCookie);
}