当前位置: 首页 > 知识库问答 >
问题:

Selenium Chrome WebDriver-无法获取单元格列表

司宏伯
2023-03-14

我有以下代码:

        WebElement table = a_chromeWebDriver.findElement(By.className("stats-table"));
        List<WebElement> allRows = table.findElements(By.tagName("tr"));

        system.out.println(allRows.size());

        for (WebElement row : allRows) {

            
            ArrayList<WebElement> cells = (ArrayList<WebElement>) row.findElements(By.tagName("td"));
    ...

我正在类似的html上执行此代码,如下所示:

<table id="table-type-1" class="stats-table stats-main table-1">
    <thead>
        <tr class="main">
            <th class="aaaa" data-type="rank" title="Rank">
                
            </th>
            A number of headers here...
        </tr>
    </thead>
    <tbody title="">
        <tr bla bla bla>
            <td class="bla bla bla" title="bla bla bla>1.</td>
            <td class="bla bla bla"></td>
            <td class="bla bla bla">36</td>
            <td class="bla bla bla">28</td>
            <td class="bla bla bla">3</td>
        </tr>
            <td class="bla bla bla" title="bla bla bla>1.</td>
            <td class="bla bla bla"></td>
            <td class="bla bla bla">45</td>
            <td class="bla bla bla">fnf</td>
            <td class="bla bla bla">kfkfk</td>
        </tr>
        .
        .
        .

allRows size为我提供了正确的行数。出于某种原因,我得到cells=null。我也试过了。xpath(“td”),但没有任何用处。

共有3个答案

缑泓
2023-03-14

超文本标记语言

通常您只能看到<代码>

正确的方法是首先确定这些部分中的每一部分,然后通过它们的子元素进行处理。

// Get the table
WebElement table = a_chromeWebDriver.findElement(By.id("table-type-1"));

// Get the thead in table
WebElement thead = table.findElement(By.tagName("thead"));

// Get the tbody in table
WebElement tbody = table.findElement(By.tagName("tbody"));

// Get all headers in thead
List<WebElement> allHeaders = thead.findElements(By.tagName("th"));

// Get all rows in tbody
List<WebElement> allRows = tbody.findElements(By.tagName("tr"));

// Get all cells for each row in allRows
for(WebElement row : allRows) {
    List<WebElement> allCells = row.findElements(By.tagName("td"));
    int rowNum = allRows.indexOf(row) + 1;
    System.out.println("Row no. " + rowNum + " has " + allCells.size() +" cells.");
}

公宜春
2023-03-14

首先,找到所有行,然后遍历它们:

  List<WebElement> allRows = driver.findElements(By.cssSelector("#table-type-1 > tbody > tr"));

  for(WebElement row : allRows){
        List<WebElement> cells = row.findElements(By.tagName("td"));
        System.out.println("Cell count: " + cells.size());//cell count for a row
  }
赵修诚
2023-03-14

使用此代码循环时:

 for (WebElement row : allRows) {


        ArrayList<WebElement> cells = (ArrayList<WebElement>) row.findElements(By.tagName("td"));

        System.out.println("CellCount " + cells.size());
    }

您将看到输出为:

CellCount 0
CellCount 4
CellCount 4

这是因为您的代码拾取的第一行来自

您可以通过将allRows元素更改为以下内容来实现这一点:

List<WebElement> allRows = table.findElements(By.xpath("tbody//tr"));
 类似资料:
  • null 如您所料,A3将导致。现在将A2的格式更改为会计,使用小数点后2位。A2现在读,但是基础值仍然是,所以A3仍然是。 VBA 制作一个新模块并添加以下函数: null 和具有相同的基础值,但和没有,尽管它们都是使用和的方法计算的。 ()中的表达式正在访问和的实际基础值。如何在VBA中访问这些值?

  • 问题内容: 我正在尝试使用Excel中电子表格中的数据,但始终会出现此错误,已经尝试将工作表格式化为文本和数字格式,但该错误仍然存​​在。 我看到一个使用它的人解决了,但是我不知道我在代码中适合该段落的地方。 问题答案: 在这种情况下,格式化程序可以正常工作。

  • 试图获取特定标题下的所有td(单元格) HTML: 方法: 实际结果: java.lang.IndexOutOfBoundsException:索引0超出长度0的边界 预期结果: 返回一个

  • 问题内容: 我正在使用openpyxl读取Excel文件。我想从“ xlsx”文件中获取单元格颜色。我试图获得颜色,以便: 我得到“ 11L”,但我需要得到rgb颜色,我该怎么办? 问题答案: 看起来工作表正在使用内置的颜色索引。这些的映射位于 11L对应于0000FF00(十六进制),其rgb元组将为绿色(0,255,0)。

  • 有人能给我一个解决方案,我可以在单元格为空时读取应用到单元格的样式吗? 谢了。

  • 我希望我的swift代码在每次按下按钮时都添加一个新的tableview单元格。你可以在下面的gif中看到我想要的东西。这段代码应该在func-tableView(_tableView:UITableView,cellForRowAt-indexPath:indexPath)中添加按钮- 在此输入图像描述