Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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
C# 如何将结果表中的所有数量值相加,并将总和与总值进行比较?_C#_Selenium_Selenium Webdriver_Automated Tests - Fatal编程技术网

C# 如何将结果表中的所有数量值相加,并将总和与总值进行比较?

C# 如何将结果表中的所有数量值相加,并将总和与总值进行比较?,c#,selenium,selenium-webdriver,automated-tests,C#,Selenium,Selenium Webdriver,Automated Tests,有一个网页 在搜索字段中键入аааааааа其乌克兰语并按下提交按钮后,我收到一条文本消息,其中显示总共找到5536个结果,并显示在某一章节中找到了多少匹配项。第一列是章节,第二列是数量 我的任务是汇总结果表中的所有数量,并将其与总值进行比较。我知道,表中的行数是动态的,因为它取决于搜索字符串,所以我不知道将有多少行,我应该以某种方式循环这些行,以便检索数量值并对其求和。请解释我是如何做到这一点的,我是SeleniumWebDriver的新手,如果能提供一些例子,我将不胜感激。您可以从文本中获

有一个网页 在搜索字段中键入аааааааа其乌克兰语并按下提交按钮后,我收到一条文本消息,其中显示总共找到5536个结果,并显示在某一章节中找到了多少匹配项。第一列是章节,第二列是数量


我的任务是汇总结果表中的所有数量,并将其与总值进行比较。我知道,表中的行数是动态的,因为它取决于搜索字符串,所以我不知道将有多少行,我应该以某种方式循环这些行,以便检索数量值并对其求和。请解释我是如何做到这一点的,我是SeleniumWebDriver的新手,如果能提供一些例子,我将不胜感激。

您可以从文本中获得总计,从使用.search\u info css locator定位的元素中获得。如何从您可以找到的文本中提取数字

要获取kіаа-cа,可以使用.table_search tbody tr td:nth-child3 css选择器,该选择器将从所有行返回第三列元素

下面是一个简单的代码示例:

// Find search info element and get text
string searchInfo = driver.FindElement(By.CssSelector(".search__info")).Text;

// Extract number from text and convert to integer
int total = Int32.Parse(Regex.Match(searchInfo, @"\d+").Value);    

List<WebElement> rows = driver.FindElements(By.CssSelector("a"));
int rowsTotal = 0;
foreach (IWebElement row in rows)
{
    rowsTotal += Int32.Parse(row.Text);
}

// Assert values here as example
Assert.AreEqual(total, rowsTotal);

我不确定您要检查什么,因为在您的示例中,719+1282不等于5536。但有一个例子可以说明如何做到这一点:

String textWithTotalCount = driver.FindElement(By.Class("search__info")).Text;
Int totalCount = Int32.Parse(Regex.Match(textWithTotalCount, @"\d+").Value);

IList<IWebElement> rows = driver.FindElements(By.Xpath("table[@class='table table_search']/tbody/tr"));
IList<int> countList = rows.ConvertAll(x => Int32.Parse(x.findElement(By.Xpath("/td[-1]")).getText())).ToList();

Assert.Equal(totalCount, countList.Count());