使用Visual Studio 2012創建Web測試。如何從Web測試記錄器插件訪問表單發佈參數
如何從Web測試記錄器插件訪問表單發佈參數?記錄的webtest的大多數方面都可以通過Visual Studio的intelisense或MSDN查看,但我無法找到表單發佈參數。
我正在測試一個以「有趣」的方式使用表單發佈參數的網站。到目前爲止,我們已經手動編輯了.webtest文件中的XML,但這很容易出錯。所以我想在一個網絡測試錄像機插件中修改它們。
使用Visual Studio 2012創建Web測試。如何從Web測試記錄器插件訪問表單發佈參數
如何從Web測試記錄器插件訪問表單發佈參數?記錄的webtest的大多數方面都可以通過Visual Studio的intelisense或MSDN查看,但我無法找到表單發佈參數。
我正在測試一個以「有趣」的方式使用表單發佈參數的網站。到目前爲止,我們已經手動編輯了.webtest文件中的XML,但這很容易出錯。所以我想在一個網絡測試錄像機插件中修改它們。
表單POST參數可以通過Web請求的主體領域的Web測試記錄器插件來訪問,但身體需要被轉換爲正確的類型。錄像機插件提供了錄製的網絡測試作爲(場)參數,測試的Items
包括個別請求。他們還包括評論等。 Item
即WebTestRequest
可能有一個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;
這有點難看,但我在調試使用PreRequestDataBinding方法的插件時能夠找到它。將鼠標放在'e'上,展開request - > body - > [Microsoft.VisualStudio.TestTools.WebTesting.FormPostHttpBody] - > FormPostParameters。但由於保護級別,您將無法編輯該值。
我最終做的是將網絡測試轉換爲編碼網絡測試。您可以通過右鍵單擊Web測試設計器視圖的頂層,然後選擇生成代碼來完成此操作。查看編碼的網絡測試,將允許您修改表單發佈參數。尋找這樣的事情...
request1Body.FormPostParameters.Add("YourFormPostName", "value");
您可以WebTestRequestPlugin的PreRequest方法添加表單之後的參數是這樣 -
FormPostHttpBody form = new FormPostHttpBody();
FormPostParameter par = new FormPostParameter();
par.Name = "name";
par.Value = "1";
form.add(par);
e.Request.Body = form;
的問題是關於在Web測試記錄插件訪問它們。您的答案與運行時的網絡測試有關,因此沒有幫助。但歡迎來到Stack Overflow並感謝您的貢獻。 – AdrianHHH 2017-11-09 12:33:33