如何从Selenium中的Web表中获取特定列

问题描述 投票:0回答:1

我在C#selenium工作,我想从Web表中获取某个列进行测试。我很好奇你是否可以使用

row.FindElements(By.TagName("wanted_col_name"));

按名称抓取某个列或按列号抓取它

Table shown on the webpage

HTML of the site

我特别想从产品线中获取元素,将它们与部件号组合,然后将字符串放入数组中。这个输出的一个例子是

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");
                }
            }
c# selenium web-testing
1个回答
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);
        }

它的工作原理是选择customers表,然后将第一列的文本与第3列连接,格式与示例相同。

我在foreach循环中添加了对tds.Count的检查,因为W3C演示页面中的第一个tablerow有一个表头,所以它返回0 tds。

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.