如何获取列数或连续?

时间:2016-09-08 05:31:15

标签: java selenium-webdriver

当我使用下面的代码段

时,我想获取给定行中的列数
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标签时,如何获取一行中的列数?

4 个答案:

答案 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