使用 Visual Studio 2012 创建 Web 测试。
如何从 Web 测试记录器插件访问表单发布参数?通过 Visual Studio 的智能感知或 MSDN 可以看到记录的 webtest 的大部分方面,但我找不到表单发布参数。
我正在测试一个以“有趣”方式使用表单发布参数的网站。到目前为止,我们已经在 .webtest 文件中手动编辑了 XML,但这很容易出错。所以我想在网络测试记录器插件中修改它们。
使用 Visual Studio 2012 创建 Web 测试。
如何从 Web 测试记录器插件访问表单发布参数?通过 Visual Studio 的智能感知或 MSDN 可以看到记录的 webtest 的大部分方面,但我找不到表单发布参数。
我正在测试一个以“有趣”方式使用表单发布参数的网站。到目前为止,我们已经在 .webtest 文件中手动编辑了 XML,但这很容易出错。所以我想在网络测试记录器插件中修改它们。
可以通过 Web 请求的主体字段在 Web 测试记录器插件中访问表单发布参数,但需要将主体转换为正确的类型。记录器插件提供记录的 Web 测试作为(a 的字段)参数,Items
测试的包括各个请求。它们还包括评论等。作为Item
a 的一个WebTestRequest
可能有一个Body
字段,该字段在转换后提供表单 post 参数。此代码显示了一个插件,该插件通过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);
}
}
}
}
}
可以通过wti
代码中的这些转换访问记录的 Web 测试的其他几个部分。
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”上,展开请求 -> 正文 -> [Microsoft.VisualStudio.TestTools.WebTesting.FormPostHttpBody] -> FormPostParameters。但是由于保护级别,您将无法编辑该值。
我最终做的是将 web 测试转换为编码的 web 测试。您可以通过右键单击 Web 测试设计器视图的顶层来执行此操作,然后选择 Generate Code。查看编码的 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;