2013-04-30 20 views
0

使用Visual Studio 2012創建Web測試。如何從Web測試記錄器插件訪問表單發佈參數

如何從Web測試記錄器插件訪問表單發佈參數?記錄的webtest的大多數方面都可以通過Visual Studio的intelisense或MSDN查看,但我無法找到表單發佈參數。

我正在測試一個以「有趣」的方式使用表單發佈參數的網站。到目前爲止,我們已經手動編輯了.webtest文件中的XML,但這很容易出錯。所以我想在一個網絡測試錄像機插件中修改它們。

回答

1

表單POST參數可以通過Web請求的主體領域的Web測試記錄器插件來訪問,但身體需要被轉換爲正確的類型。錄像機插件提供了錄製的網絡測試作爲(場)參數,測試的Items包括個別請求。他們還包括評論等。 ItemWebTestRequest可能有一個Body字段,在投射後,該字段提供表單發佈參數。此代碼顯示了一個插件,通過此處未顯示的WriteLine方法顯示錶單發佈參數的一些詳細信息。可以用代碼替換內部循環來修改,刪除或添加新的表單發佈參數。

public override void PostWebTestRecording(object sender, PostWebTestRecordingEventArgs e) 
{ 
    foreach (WebTestItem wti in e.RecordedWebTest.Items) 
    { 
     WebTestRequest wtiwtr = wti as WebTestRequest; 

     if (wtiwtr != null) 
     { 
      FormPostHttpBody formBody = wtiwtr.Body as FormPostHttpBody; 

      if (formBody == null) 
      { 
       // no formBody. 
      } 
      else 
      { 
       WriteLine("Have {0} form post parameters", formBody.FormPostParameters.Count); 
       foreach (FormPostParameter fpp in formBody.FormPostParameters) 
       { 
        WriteLine("FPP '{0}' = '{1}'", fpp.Name, fpp.Value); 
       } 
      } 
     } 
    } 
} 

幾個記錄的web測試的其它部分可以通過的wti在代碼這些鑄件進行訪問。

Comment wtic = wti as Comment; 
IncludedWebTest wtiiwt = wti as IncludedWebTest; 
SharepointInformation wtispi = wti as SharepointInformation; 
TransactionTimer wtitt = wti as TransactionTimer; 
WebTestConditionalConstruct wtiwtcc = wti as WebTestConditionalConstruct; 
0

這有點難看,但我在調試使用PreRequestDataBinding方法的插件時能夠找到它。將鼠標放在'e'上,展開request - > body - > [Microsoft.VisualStudio.TestTools.WebTesting.FormPostHttpBody] - > FormPostParameters。但由於保護級別,您將無法編輯該值。

我最終做的是將網絡測試轉換爲編碼網絡測試。您可以通過右鍵單擊Web測試設計器視圖的頂層,然後選擇生成代碼來完成此操作。查看編碼的網絡測試,將允許您修改表單發佈參數。尋找這樣的事情...

request1Body.FormPostParameters.Add("YourFormPostName", "value"); 
0

您可以WebTestRequestPlugin的PreRequest方法添加表單之後的參數是這樣 -

 FormPostHttpBody form = new FormPostHttpBody(); 
    FormPostParameter par = new FormPostParameter(); 
    par.Name = "name"; 
    par.Value = "1"; 
    form.add(par); 
    e.Request.Body = form; 
+0

的問題是關於在Web測試記錄插件訪問它們。您的答案與運行時的網絡測試有關,因此沒有幫助。但歡迎來到Stack Overflow並感謝您的貢獻。 – AdrianHHH 2017-11-09 12:33:33