2013-06-24 48 views
0

我一直試圖從編碼Web測試(VS2008)中的提取規則中提取結果。我想從testA中的標記中提取URL並將其提供給testB的運行參數。我一直在通過testA的代碼,直到在「yield return WebTestRequest」語句之後。 這可能嗎?在編碼Web測試中從提取規則中獲取結果

代碼片段:

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; 

大衛

回答

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); 
相關問題