使用selenium xpath计算HTML表格行中的列数

时间:2016-04-04 14:49:07

标签: html selenium xpath

我必须使用selenium Xpath获取特定行中存在的列的计数。 按照我为此编写的代码:

 WebElement table = CoreCommands.locateElement(context, By.xpath("//table[@id='addRowTable_selected_a']"));
        if (table != null) {
            List<WebElement> ts_rows = CoreCommands.locateElementList(context, table,By.xpath("//table[@id='addRowTable_selected_a']/tbody/tr"));
            int ts_cntRows = ts_rows.size(); 


        for(int i=4;i<=ts_cntRows;i++)
        {

            List<WebElement> ts_cols = CoreCommands.locateElementList(context, table,By.xpath("//table[@id='addRowTable_selected_a']/tbody/tr[i]/td"));
            int ts_cntCols = ts_cols.size();

            for(int j=1;j<=ts_cntCols;j++)
            {
              String str= CoreCommands.locateElement(context, By.xpath("//table[@id='addRowTable_selected_a']/tbody/tr[i]/td[j]")).getText();
            System.out.println(str);


            }
        }

在ts_cntCols中为任何行返回零。

2 个答案:

答案 0 :(得分:0)

我希望使用xpath有问题。让我们看看上面使用的“// table [@ id ='addRowTable_selected_a'] / tbody / tr [i] / td”这只是字符串而不是传递动态我价值,对吗?所以尝试下面的

   "//table[@id='addRowTable_selected_a']/tbody/tr["+i+"]/td"

同样对列xpath执行相同操作以获取文本。

谢谢你, 穆拉利

答案 1 :(得分:0)

计算第3行中每行的单元格数量的示例:

WebDriver driver = new FirefoxDriver();
driver.get("http://the-internet.herokuapp.com/tables");

// iterate each row from row 3
List<WebElement> rows = driver.findElements(By.xpath("//table[@id='table1']/tbody/tr[position() > 2]"));
for (WebElement row : rows) {

    // get all the cells from the row
    List<WebElement> cells = row.findElements(By.cssSelector("td"));

    // print the number of columns
    System.out.printf("columns: %d%n", cells.size());

    // iterate each column
    for (WebElement cell : cells) {

        // print the content
        System.out.println(cell.getText());
    }
}

driver.quit();