我正在使用C#硒,我想从Web表中获取特定列以进行测试。我很好奇是否可以使用
row.FindElements(By.TagName("wanted_col_name"));
按名称抓取特定列或按列号抓取
我特别想从产品系列中获取元素,将它们与部件号组合在一起,然后将字符串放入数组中。此输出的一个示例是
BCA/A1
BCA/A2
PEN/30
当然是DELIVERED BY NOON
,但我不知道如何排除它。
我现在拥有的代码可以打印出表格的每个元素,但是当我尝试仅打印出我想要的列时,它是行不通的,因为它包括单个字符串中的整个行和DELIVERED BY NOON
字符串。
IWebElement tableElement = driver.FindElement(By.XPath("//*[@id='InvoiceTable']/tbody"));
IList<IWebElement> tableRow = tableElement.FindElements(By.TagName("tr"));
IList<IWebElement> rowTD;
foreach(IWebElement row in tableRow)
{
rowTD = row.FindElements(By.TagName("td"));
foreach (IWebElement col in rowTD)
{
TestContext.WriteLine(col.Text + " ... \n\n");
}
}
答案 0 :(得分:0)
此代码为W3C网站提供了有关经过测试且可以正常运行的HTML表的所需功能:
driver.Navigate().GoToUrl("https://www.w3schools.com/html/html_tables.asp");
var table = driver.FindElement(By.Id("customers"));
var rows = table.FindElements(By.TagName("tr"));
foreach (var row in rows)
{
var tds= row.FindElements(By.TagName("td"));
if (tds.Count > 2)
Console.WriteLine("{0}/{1}", tds[0].Text, tds[2].Text);
}
通过选择客户表来工作,然后将第一列的文本与第三列的文本连接起来,格式与示例相同。
我在foreach循环中添加了对tds.Count的检查,因为W3C演示页面中的第一个表行具有表头,因此它返回0 tds。
我希望这会有所帮助。