如何将作为从当前请求收到的响应的一部分的字段/值作为下一个请求的参数传递?
我只能设置静态表单 POST 参数。有没有办法在配置 Web 测试的可用 UI 中执行此操作?
我已经四处搜索,但这些似乎可以使用 jMeter 和其他 Web 测试框架。看到这些让我放弃(暂时)并同时开始探索 Coded Web Test 方法。
任何建议/指针表示赞赏。
如何将作为从当前请求收到的响应的一部分的字段/值作为下一个请求的参数传递?
我只能设置静态表单 POST 参数。有没有办法在配置 Web 测试的可用 UI 中执行此操作?
我已经四处搜索,但这些似乎可以使用 jMeter 和其他 Web 测试框架。看到这些让我放弃(暂时)并同时开始探索 Coded Web Test 方法。
任何建议/指针表示赞赏。
我知道这是关于 Visual Studio 2012 的一个老问题,但是也许这可能有助于尝试为 Visual Studio 2015 实现这一目标的人。可能有很多方法可以完成这件事;这是我的处理方式:
Request
,设置一个提取规则:右键单击Request
并选择Add Extraction Rule...
。这将允许您存储响应中的数据以在以后的请求中使用。有多种方法可以提取数据,例如从 POST 字段中提取数据。数据存储在命名变量Context Parameter Name
. 假设您已将其设置为sessionid
.Add Dependent Request
。您可以在任何地方添加访问上下文变量,方法是用双花括号括起来:{{sessionid}}
.经过一番挖掘后,我能够做到这一点。结果它非常简单(即使用编码测试)。
.
.
.
var request1 = new WebTestRequest("http://localhost/Home/Index");
var sessionId = "";
request1.ExtractValues += (s, e) => {
sessionId =
e.Response.HtmlDocument.HtmlTags.SingleOrDefault(tag =>
tag.Name == "somename"
&& tag.Attributes.Any(a => a.Name == "attrName"
&& a.Value == "attrValue"));
};
yield return request1;
然后,
var request2 = new WebTestRequest("http://localhost/SomeController/Index/");
var request2Body = new FormPostHttpBody();
request2Body.FormPostParameters.Add("sessionId", sessionId);
request2.Body = request2Body;
yield return request2;
如果有人知道更好的方法,请发布答案。