如何获取特定元素Selenium的行号?

时间:2013-10-17 15:18:49

标签: java selenium

有一个包含多行的表。

我正在使用sccSelector

查找此表的元素
WebElement myElement = driver.findElement(By.cssSelector...........);

这个元素属于某个表行,比方说第5行。 我怎样才能得到这一行的数字?

int myElementRowNumber = ???

3 个答案:

答案 0 :(得分:6)

使用rows = myElement.findElement(By.xpath("ancestor::table[1]"))找到该表。然后,您可以使用table.findElements( By.xpath("./tbody/tr"))获取所有行。

使用另一个row = myElement.findElement(By.xpath("ancestor::tr[1]"))获取行元素。

现在只是:

int myElementRowNumber = rows.indexOf( row );

答案 1 :(得分:0)

您可以使用此函数获取存在特定值的行的行号

public String rowNo(String value)
{
   WebElement table =driver.findElement(By.id("tableId"));
   WebElement tbody=table.findElement(By.tagName("tbody"));
   List<WebElement> rows=tbody.findElements(By.tagName("tr"));
   ArrayList<String> ListOdIds=new ArrayList<>();
   String rowNo="";
   for(int i=0;i<rows.size();i++)
   {
     WebElement row = tbody.findElement(By.xpath("//table[@id='tableId']/tbody/tr["+(i+1)+"]"));
     if(row.getText().trim().contains(value))
     {
        rowNo=Integer.toString(i+1); 
            break;
     }

   }

   return rowNo;
}

答案 2 :(得分:0)

您可以使用 JavaScriptExecuter 执行此操作。以下代码适合您。

 JavascriptExecutor js = (JavascriptExecutor) driver;  
 int myElementRowNumber = js.executeScript("return arguments[0].cellIndex;",myElement);