Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在Web性能测试中提取GridView列中的最大值_Asp.net_.net_Web_Performance Testing - Fatal编程技术网

Asp.net 在Web性能测试中提取GridView列中的最大值

Asp.net 在Web性能测试中提取GridView列中的最大值,asp.net,.net,web,performance-testing,Asp.net,.net,Web,Performance Testing,这与.NET Web性能测试有关 如果我有一个ASP.NET页面,其中GridView的列为ints,那么如何编写提取规则以获取列中最大的int 我尝试通过继承ExtractionRule创建自定义提取规则,并在Extract方法中使用e.Response.HtmlDocument.GetFilteredHtmlTags,但是,返回的HtmlTag似乎没有公开它们的innerHtml内容。也许您可以编写一个提取规则来获取整个列,然后处理这些数字以获得它们的最大值。或者,使用内置的提取规则获取整个

这与.NET Web性能测试有关

如果我有一个ASP.NET页面,其中GridView的列为
int
s,那么如何编写提取规则以获取列中最大的
int


我尝试通过继承
ExtractionRule
创建自定义提取规则,并在
Extract
方法中使用
e.Response.HtmlDocument.GetFilteredHtmlTags
,但是,返回的
HtmlTag
似乎没有公开它们的
innerHtml
内容。

也许您可以编写一个提取规则来获取整个列,然后处理这些数字以获得它们的最大值。或者,使用内置的提取规则获取整个列,然后编写插件获取最大值。在任何一种情况下,您的代码都应该包含数字和其他文本。

Ben Day有一篇很棒的博客文章,其中包含两种表达类似关注的类型。TableColumnValueValidator和ExtractRandomValueFromTable

在Extract(对象,ExtractionEventArgs)中,需要解析ExtractionEventArgs.Response.BodyString。Ben为此使用HtmlAgilityPack库

类似这样的代码大致就是您需要的代码。这是从表中提取RandomValueFromTable的简单逻辑

这不包括AD/T正文或跨多个列/行的单元格

HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(e.Response.BodyString);
HtmlNode table = doc.GetElementbyId(TableId); // TableId is a test property
HtmlNodeCollection columns = table.SelectNodes("//th");
int columnIndex = FindColumnIndexByName(columns, ColumnName); // ColumnName is a test property
HtmlNodeCollection rows = table.SelectNodes("//tr")
int maxValue = Int32.MinValue;
foreach(HtmlNode row in rows)
{
   HtmlNodeCollection cells = row.SelectNodes("./td");
   // Todo check for bounds of cells here
   HtmlNode cell = cells[columnIndex];
   int value = Int32.MinValue;
   Int32.TryParse(cell.InnerText.Trim(), out value);
   maxValue = Math.Max(value, maxValue);
}
e.WebTest.Context.Add(ContextParameterName, maxValue);

int FindColumnIndexByName(HtmlNodeCollection columns, string columnName)
{
   for(int i=0; i<columns.Count; i++)
   if (String.Equals(columns[i].InnerText, columnName, StringComparison.OrdinalIgnoreCase))
   {
     return i;
   }
   return -1;
}
HtmlDocument doc=new-HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(e.Response.BodyString);
HtmlNode table=doc.GetElementbyId(TableId);//TableId是一个测试属性
HtmlNodeCollection columns=table.SelectNodes(“//th”);
int columnIndex=FindColumnIndexByName(columns,ColumnName);//ColumnName是一个测试属性
HtmlNodeCollection行=table.SelectNodes(“//tr”)
int maxValue=Int32.MinValue;
foreach(行中的HtmlNode行)
{
HtmlNodeCollection单元格=行。选择节点(“./td”);
//Todo检查此处的单元格边界
HtmlNode单元格=单元格[列索引];
int value=Int32.MinValue;
Int32.TryParse(cell.InnerText.Trim(),out值);
maxValue=Math.Max(值,maxValue);
}
e、 添加(ContextParameterName,maxValue);
int FindColumnIndexByName(HtmlNodeCollection列,字符串columnName)
{

对于(int i=0;i您的GridView从何处获取数据?查询数据源而不是显示数据源的元素不是更合适吗?这是一个很好的观点,@Serv。如何从数据源获取最大列数?您的数据源是什么?它是数据库吗?datatable?您如何将数据绑定到GridView?请告诉我们提供更多信息。最好的解决方案包括一些示例数据,以便我们可以重建您的问题