试图获取特定标题下的所有td(单元格)
HTML:
<table width="800">
<tbody>
<tr>
<th><b>User ID</b></th>
<th><b>Workforce ID</b></th>
<th><b>Given Name</b></th>
<th><b>Surname</b></th>
<th><b>Division</b></th>
<th><b>Hire Date</b></th>
<th><b>Department</b></th>
<th><b>emplType</b></th>
<th><b>Associations</b></th>
<th><b>SAP Roles</b></th>
<th><b>Community</b></th>
<th><b>Active</b></th>
</tr>
<tr>
<td class="active"><a href="?username=utest001">utest001</a></td>
<td class="active">00700001</td>
<td class="active">User</td>
<td class="active">Test001</td>
<td class="active">Coles</td>
<td class="active">2015-10-27</td>
<td class="active">CHFITVB</td>
<td class="active">S</td>
<td class="active">IAM</td>
<td class="active"></td>
<td class="active">Workforce</td>
<td class="active">Y</td>
</tr>
<tr>
<td class="disabled"><a href="?username=utest002">utest002</a></td>
<td class="disabled">00700002</td>
<td class="disabled">Vasia</td>
<td class="disabled">Smith</td>
<td class="disabled">Coles</td>
<td class="disabled">2015-11-16</td>
<td class="disabled">C0584SV</td>
<td class="disabled">W</td>
<td class="disabled"></td>
<td class="disabled"></td>
<td class="disabled">Workforce</td>
<td class="disabled">N</td>
</tr>
</tbody>
</table>
方法:
public List<WebElement> getCellsUnderHeader(WebElement table, String headerName) {
List<WebElement> thList = table.findElements(By.cssSelector("th > b"));
List<String> headers = new ArrayList<>();
thList.stream().forEach(th -> headers.add(th.getText()));
int index = headers.indexOf(headerName);
List<WebElement> trList = table.findElements(By.tagName("tr"));
List<WebElement> tdList = new ArrayList<>();
List<WebElement> columnCells = new ArrayList<>();
WebElement cell = null;
for (WebElement tr : trList) {
tdList = tr.findElements(By.tagName("td"));
cell = tdList.get(index); // Getting out of bounds here
columnCells.add(cell);
}
return columnCells;
}
实际结果:
java.lang.IndexOutOfBoundsException:索引0超出长度0的边界
预期结果:
返回一个列表
List<String> userIDs = driver.findElements(By.xpath("//td/a"))
.stream()
.map(elem -> elem.getText())
.collect(Collectors.toList());
问题:
对于第一次tr迭代,没有可用的td,这导致了异常
使用以下:
public List<WebElement> getCellsUnderHeader(WebElement table, String headerName) {
List<WebElement> thList = table.findElements(By.cssSelector("th > b"));
List<String> headers = new ArrayList<>();
thList.stream().forEach(th -> headers.add(th.getText()));
int index = headers.indexOf(headerName);
System.out.println("Index : "+index);
List<WebElement> trList = table.findElements(By.tagName("tr"));
List<WebElement> tdList = new ArrayList<>();
List<WebElement> columnCells = new ArrayList<>();
WebElement cell = null;
for (WebElement tr : trList) {
tdList = tr.findElements(By.tagName("td"));
if (tdList.size()>0){
cell = tdList.get(index); // Getting out of bounds here
columnCells.add(cell);
}
}
return columnCells;
}
包含<代码>
您可以通过索引进行迭代
for (int i = 1 ; i < trList.size() ; i++) {
tdList = trList.get(i).findElements(By.tagName("td"));
cell = tdList.get(index);
columnCells.add(cell);
}
或者先发货
for (WebElement tr : trList.subList(1, trList.size())) {
tdList = tr.findElements(By.tagName("td"));
cell = tdList.get(index);
columnCells.add(cell);
}
问题内容: 我如何从使用硒与node.js的下拉菜单中获取所有选项 下面是我的代码: 从上面 我如何获取所有选项并在node.js中执行foreach或使用node.js打印选项值。 提前致谢。 问题答案:
我已经用RowSelectionModel和RowSelectionProvider创建了一个NatTable: 基本上,表做我想让它做的事情。只有一个例外: 该表如下所示: 所以,我现在有点卡住了。是什么导致标头单元格被突出显示,我如何改变这种行为?是否可以只突出光标单元格的标头(就像对选定行的光标单元格(2)所做的那样)?
我有以下代码: 我正在类似的html上执行此代码,如下所示: allRows size为我提供了正确的行数。出于某种原因,我得到cells=null。我也试过了。xpath(“td”),但没有任何用处。
问题内容: 我有一个对象列表,其中每个对象返回。我如何使用Java 8流仅获得一个? 类具有以下方法; 我有 我正在尝试的是 但是上面的行没有返回 ,而是 我不想要的。 问题答案: 您应该用来从包含在主列表中每个对象中的列表中创建一个列表。请检查; 该调用适用于列表中包含with 的情况,因为这将导致下一行,因此我们应该将其过滤掉。还有其他方法可以实现这一点; -- -- 您可以按如下方式包含来自
问题内容: 我想学习如何从MS SQL数据库中获取具有标识列的所有表的列表。 问题答案: