如何在selenium c#中处理web表?

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

在我的应用程序中,我必须在webtable上断言名称,但我无法做到这一点。

下面是我的HTML代码的图片,我无法复制粘贴到这里。

enter image description here

我必须从web表中获取名字:"Robert Brits",并想断言同样的名字。

我尝试了下面的逻辑。

 IWebElement tableElement = driver.FindElement(By.Xpath("//table[@id='globalSearchTable']"));
            IList<IWebElement> tableRow = tableElement.FindElements(By.TagName("tr"));
            IList<IWebElement> rowTD;
            foreach (IWebElement row in tableRow)
            {
                rowTD = row.FindElements(By.TagName("td"));
                {
                  _____
                  }
             }

我不知道如何继续下去并完成代码。谁能帮帮我?先谢谢你

c# selenium unit-testing testing xpath
1个回答
0
投票

如果你想只验证该值,请尝试以下方法。xpath.

IWebElement tableElement = driver.FindElement(By.Xpath("//table[@id='globalSearchTable']/tbody/tr[1]/td[3]"));
Assert.AreEqual(tableElement.Text,"Robert Brits")

0
投票

你可以这样做...。

    var value = "Robert Brits";

    var table = driver.FindElement(By.Xpath("//table[@id='globalSearchTable']")
    foreach (var tr in table.FindElements(By.TagName("tr")))
    {
        var tds = tr.FindElements(By.TagName("td"));
        for (var i = 0; i < tds.Count; i++)
        {
           if (tds[i].Text.Trim().Contains(value))
         {
               var test = tds[i].Text.Trim();
                Assert.IsTrue(test.Contains(value));
                break;
         }

        }
    }

我知道这个条件语句看起来很奇怪,但我把它留在那里是有原因的。大多数表格都有很多列,所以你可能想让if语句来查找姓名、账号、电子邮件等。因此,你可能希望if语句寻找一个名字,账号,电子邮件等,然后停止。然后你可能需要在该行中向左或向右移动以获得文本或点击一个链接。在这个例子中,你可以调用tds[i]作为搜索条件,然后使用tds[i-2]向tds[i]的左边走两列,或者使用tds[i+3]向tds[i]的右边走三列。

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