【问题标题】:How to handle web table in selenium c#如何处理Selenium C#中的Web表
【发布时间】:2020-08-30 04:19:41
【问题描述】:

在我的应用程序中,我必须在 webtable 上声明名称,但我无法这样做。

下面是我的 HTML 代码的图像,我无法在此处复制粘贴。

我必须从 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】:

    如果您只想验证该值,请尝试关注xpath

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

    【讨论】:

      【解决方案2】:

      你可以这样做......

          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 语句查找姓名、帐号、电子邮件等并停止。然后您可能需要在该行的左侧或右侧获取文本或单击链接。在此示例中,您可以调用 tds[i] 作为搜索条件,然后使用 tds[i-2] 到 tds[i] 左侧的两列或使用 tds[i+3] 到右侧的三列tds[i].

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-01
        • 1970-01-01
        • 2014-03-14
        相关资源
        最近更新 更多