在Coded Web Test中获取提取规则的结果

时间:2013-06-24 16:29:21

标签: c# visual-studio-2008 automated-tests

我一直在尝试从编码Web测试(VS2008)中的提取规则中提取结果。我想从testA中的标记中提取URL并将其提供给testB的运行参数。我一直在通过testA的代码,直到“yield return WebTestRequest”语句之后。 这可能吗?

代码片段:

ExtractAttributeValue();
            extractionRule6.TagName = "a";
            extractionRule6.AttributeName = "href";
            extractionRule6.MatchAttributeName = "";
            extractionRule6.MatchAttributeValue = "";
            extractionRule6.HtmlDecode = true;
            extractionRule6.Required = true;
            extractionRule6.Index = 0;
            extractionRule6.ContextParameterName = "";
            extractionRule6.ContextParameterName = "fifth";
            request2.ExtractValues += new EventHandler<ExtractionEventArgs>(extractionRule6.Extract);
                  yield return request2;

大卫

1 个答案:

答案 0 :(得分:0)

我明白了。通过在返回WebTestRequest之后直接访问Context对象。我使用了Context的TryGetValue方法。代码在下面添加。我的提取规则名为“firstprj”。我还能够使用bool跳过所有剩余的WebTestRequests,如果没有找到URL,则返回此方法。

        WebTestRequest request2 = new WebTestRequest("http://tramdev/MyProjects.aspx");
        request2.Method = "POST";
        request2.Headers.Add(new WebTestRequestHeader("x-microsoftajax", "Delta=true"));
        FormPostHttpBody request2Body = new FormPostHttpBody();
        request2Body.FormPostParameters.Add("ctl00$cphMain$SM", "ctl00$cphMain$pnlLoadCurtain|ctl00$cphMain$btnSearch");
        request2Body.FormPostParameters.Add("__EVENTTARGET", this.Context["$HIDDEN1.__EVENTTARGET"].ToString());
        request2Body.FormPostParameters.Add("__EVENTARGUMENT", this.Context["$HIDDEN1.__EVENTARGUMENT"].ToString());
        request2Body.FormPostParameters.Add("__LASTFOCUS", this.Context["$HIDDEN1.__LASTFOCUS"].ToString());
        request2Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
        request2Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());
        request2Body.FormPostParameters.Add("ctl00$cphMain$txtProjectName", "");
        request2Body.FormPostParameters.Add("ctl00$cphMain$txtOpenStartDate", "");
        request2Body.FormPostParameters.Add("ctl00$cphMain$txtOpenEndDate", "");
        request2Body.FormPostParameters.Add("ctl00$cphMain$ddlAOR", "--All--");
        request2Body.FormPostParameters.Add("ctl00$cphMain$ddlSubAOR", "--All--");
        request2Body.FormPostParameters.Add("ctl00$cphMain$ddlContact", "0");
        request2Body.FormPostParameters.Add("ctl00$cphMain$lstProjectStatus", "Applied for Charter");
        request2Body.FormPostParameters.Add("ctl00$cphMain$gvPrjSearch$ctl02$txtstatus", "");
        request2Body.FormPostParameters.Add("ctl00$cphMain$gvPrjSearch$ctl03$txtstatus", "");
        request2Body.FormPostParameters.Add("ctl00$cphMain$gvPrjSearch$ctl06$txtstatus", "");
        request2Body.FormPostParameters.Add("__ASYNCPOST", "true");
        request2Body.FormPostParameters.Add("ctl00$cphMain$btnSearch", "Search");
        request2.Body = request2Body;
        ExtractAttributeValue extractionRule2 = new ExtractAttributeValue();
        extractionRule2.TagName = "a";
        extractionRule2.AttributeName = "href";
        extractionRule2.MatchAttributeName = "";
        extractionRule2.MatchAttributeValue = "";
        extractionRule2.HtmlDecode = true;
        extractionRule2.Required = true;
        extractionRule2.Index = 5;
        extractionRule2.ContextParameterName = "";
        extractionRule2.ContextParameterName = "firstprj";
        request2.ExtractValues += new EventHandler<ExtractionEventArgs>(extractionRule2.Extract);
        yield return request2;
        request2 = null;

        // get prjId of first record in project list (href in extracted attribute value)
        bool urlFound;
        object firstProjectUrlObj;
        string prjId;

        urlFound = Context.TryGetValue("firstprj", out firstProjectUrlObj);