【问题标题】:How to find specific lines in a table using Selenium?如何使用 Selenium 在表格中查找特定行?
【发布时间】:2012-12-20 22:41:16
【问题描述】:

这是一个示例代码:

<div id="productOrderContainer">
  <table class="table gradient myPage">

因此,productOrderContainer 中的这个表有几列,并且根据几项内容将有几行,这些行都有几列。一个例子是:

我想要做的是例如获取该表的第一行。 (行有 id,例如:&lt;td rowspan="1"&gt;)然后再次例如在此行跨度中查找特定 &lt;div&gt; 中的特定值

所以在伪代码中我想说的是:

给我桌子,给我第n行,给我&lt;div id='something'&gt;中的值

【问题讨论】:

    标签: selenium selenium-webdriver web-testing automated-tests gui-testing


    【解决方案1】:

    你可以尝试关注

    int index = 0;
    WebElement baseTable = driver.findElement(By.className("table gradient myPage"));
    List<WebElement> tableRows = baseTable.findElements(By.tagName("tr"));
    tableRows.get(index).getText();
    

    您还可以遍历 tablerows 以执行您想要的任何功能。

    【讨论】:

    • 这看起来根本不对。 WebDriver.findElement(By.className("")) 将定位文档中的 every 元素,而不是 OP 正在查找的表。所以下一行将收集整个文档中的所有&lt;TR&gt;s,而不是在特定的表中。
    • 我的错误... By.className 不应该为空。复制粘贴错误。谢谢@RossPatterson
    • @KorayTugay 如果解决方案不起作用,请告诉我更多信息。我很乐意提供帮助。
    【解决方案2】:

    你想要:

    int rowNumber=...;
    string value = driver.findElement(By.xpath("//div[@id='productOrderContainer']/table/tbody/tr[" + rowNumber +"]/div[id='something']")).getText();
    

    换句话说,在&lt;TABLE&gt; 中包含的&lt;TR&gt; 中找到ID 为“something”的&lt;DIV&gt;,ID 为“productOrderContainer”的&lt;DIV&gt;,然后获取其文本价值(我相信你的意思是“给我&lt;div id='something'&gt;中的价值”

    【讨论】:

      【解决方案3】:

      如果你想访问表格单元格

      WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[1]")); 
      

      如果你想访问嵌套表格单元格 -

      WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[2]"+//table/tbody/tr[1]/td[2]));
      

      更多详情请访问Tutorial

      【讨论】:

        【解决方案4】:

        之前,我使用了您可以在WebElement 中找到的方法:

        WebElement baseTable = driver.findElement(By.tagName("table"));
        WebElement tableRow = baseTable.findElement(By.xpath("//tr[2]")); //should be the third row
        webElement cellIneed = tableRow.findElement(By.xpath("//td[2]"));
        String valueIneed = cellIneed.getText();
        

        请注意,我在找到的 WebElement 实例中找到。

        以上是Java代码,假设driver变量是WebDriver的健康实例

        【讨论】:

        • 这不会像写的那样工作,因为WebElement.findElement(By.xpath(...)) 在文档上下文中解释 XPath 定位器,而不是像其他所有 By.whatever() 一样在元素上下文中解释。
        • 应该是tableRow.findElement(By.xpath("td[2]"))吧?
        【解决方案5】:
        (.//*[table-locator])[n]
        

        其中n代表具体的行。

        【讨论】:

          【解决方案6】:

          以下代码允许您指定行/列号并获取生成的单元格值

          WebDriver driver = new ChromeDriver();
          WebElement base = driver.findElement(By.className("Table"));
          tableRows = base.findElements(By.tagName("tr"));
          List<WebElement> tableCols = tableRows.get([ROW_NUM]).findElements(By.tagName("td"));
          String cellValue = tableCols.get([COL_NUM]).getText();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-21
            • 1970-01-01
            • 2021-02-09
            • 2014-11-14
            • 2020-06-15
            • 1970-01-01
            相关资源
            最近更新 更多