-2

使用 Visual Studio 2012 创建 Web 测试。

如何从 Web 测试记录器插件访问表单发布参数?通过 Visual Studio 的智能感知或 MSDN 可以看到记录的 webtest 的大部分方面,但我找不到表单发布参数。

我正在测试一个以“有趣”方式使用表单发布参数的网站。到目前为止,我们已经在 .webtest 文件中手动编辑了 XML,但这很容易出错。所以我想在网络测试记录器插件中修改它们。

4

3 回答 3

2

可以通过 Web 请求的主体字段在 Web 测试记录器插件中访问表单发布参数,但需要将主体转换为正确的类型。记录器插件提供记录的 Web 测试作为(a 的字段)参数,Items测试的包括各个请求。它们还包括评论等。作为Itema 的一个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;
于 2014-08-13T18:39:05.200 回答
0

它有点难看,但我在调试使用 PreRequestDataBinding 方法的插件时能够找到它。将鼠标放在“e”上,展开请求 -> 正文 -> [Microsoft.VisualStudio.TestTools.WebTesting.FormPostHttpBody] -> FormPostParameters。但是由于保护级别,您将无法编辑该值。

我最终做的是将 web 测试转换为编码的 web 测试。您可以通过右键单击 Web 测试设计器视图的顶层来执行此操作,然后选择 Generate Code。查看编码的 web 测试,将允许您修改表单发布参数。寻找这样的东西......

request1Body.FormPostParameters.Add("YourFormPostName", "value");
于 2013-10-11T14:42:50.520 回答
0

您可以在 WebTestRequestPlugin 的 PreRequest 方法中添加这样的表单发布参数 -

     FormPostHttpBody form = new FormPostHttpBody();
     FormPostParameter par = new FormPostParameter();
     par.Name = "name";
     par.Value = "1";
     form.add(par);
     e.Request.Body = form;
于 2017-11-09T12:06:45.440 回答