当我使用下面的代码段
时,我想获取给定行中的列数int size = element.findElement(By.xpath("/tr[" + Row + "]")).findElements(By.tagName("td")).size();
我收到一条说明NoSuchElementException的异常。
以下是HTML块
<table class="DynamicOrderTable" id="customerOrderHeader">
<tbody>
<tr style="background-color: rgb(246, 246, 246);">
<th>Order Number</th>
<th>Version</th>
<th>Customer Name</th>
<th>Order Status</th>
<th>Order Sub-status</th>
</tr>
<tr class="Temp">
<td class="close" id="orderNumber">
<div class="clickableText">1234</div>
</td>
<td class="close">1</td>
<td class="close" id="customerName">ABC101</td>
<td title="OrderResponse Sequence Number:14" class="close" id="orderStatus"><div class="clickableText">Complete</div></td>
<td class="close">Closed</td>
</tr>
</tbody>
</table>
当我们有thead和tbody标签时,如何获取一行中的列数?
答案 0 :(得分:1)
获取列大小的代码是正确的,只需将/tr
中的.//tr
更改为xpath
: -
WebElement element = driver.findElement(By.id("customerOrderHeader"));
int size = element.findElement(By.xpath(".//tr[" + Row + "]")).findElements(By.tagName("td")).size();
或者
int size = element.findElements(By.tagName("tr")).get(Row).findElements(By.tagName("td")).size();
答案 1 :(得分:0)
如果我理解你的问题,下面的代码可以帮助你获得否定。列。
使用XPath
int size = driver.findElements(By.xpath("//*[@id="customerOrderHeader"]/tbody/tr[1]/th")).size();
使用CssSelector
int size = driver.findElements(By.cssSelector("table#customerOrderHeader>tbody>tr:first-child>th")).size();
答案 2 :(得分:0)
使用带有行索引的cell属性
document.getElementById("customerOrderHeader").rows[0].cells.length;
答案 3 :(得分:0)
请尝试以下代码:
int count =driver.findElements(By.xpath(".//tr[@class='Temp']//td")).size();
System.out.println("count is "+count);//output is count is 5