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

4

有一个带有多行的表格。

我正在使用sccSelector定位此表格的元素。

WebElement myElement = driver.findElement(By.cssSelector...........);

这个元素属于某个表格行,假设是第五行。我如何获取这一行的编号?

int myElementRowNumber = ???

我假设你在谈论一个表格行。这是不可能的原生实现,除非兄弟元素包含有行号的文本,否则也不会很容易。但是,如果你需要编写它的帮助,我们需要一些HTML代码。 - Nathan Merrill
3个回答

8

使用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 );

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;
}

首先,我们从表中获取所有行,并检查该行是否包含字符串值。它将返回包含该字符串值的行号。 - Praveen

0
你可以使用 JavaScriptExecuter 来实现。以下代码适用于你。
 JavascriptExecutor js = (JavascriptExecutor) driver;  
 int myElementRowNumber = js.executeScript("return arguments[0].cellIndex;",myElement);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接