Java Selenium—如何动态计算表中的行数?

Java Selenium—如何动态计算表中的行数?,java,selenium-webdriver,Java,Selenium Webdriver,在我的html页面中有一个包含10行的表;这些行将基于过滤器(动态)显示。例如,假设没有任何过滤器,默认情况下将返回10行。 应用过滤器后,根据过滤器的类型,返回的行数将少于10行,因此我希望使用SeleniumWeb驱动程序获得表行的动态计数(过滤器之后) 我尝试了driver.findElements(By.xpath(“abcd”)).size(),但这给出了默认计数10;但是,应用过滤器后,仅显示2行 请建议如何获取动态计数(计数=2,在UI中显示为2行)。我将以我不是Java开发人员这

在我的html页面中有一个包含10行的表;这些行将基于过滤器(动态)显示。例如,假设没有任何过滤器,默认情况下将返回10行。 应用过滤器后,根据过滤器的类型,返回的行数将少于10行,因此我希望使用SeleniumWeb驱动程序获得表行的动态计数(过滤器之后)

我尝试了
driver.findElements(By.xpath(“abcd”)).size()
,但这给出了默认计数10;但是,应用过滤器后,仅显示2行


请建议如何获取动态计数(计数=2,在UI中显示为2行)。

我将以我不是Java开发人员这一事实作为前缀,但我在其他语言中使用了大量webdriver

设置测试的最佳方法是等待测试所执行操作的结果。有时,您可以不进行等待或定时等待就可以离开,但随后您在较慢的网格盒上运行测试,所有内容都会堆在一起

像“div存在”、“div有阶级”之类的东西,不管你的结果是什么。在您的情况下,听起来您可能无法测试要渲染的div,但您可能可以使用大小测试作为等待的结果

Selenium可以使用任意函数,也可以指定函数

WebDriverWait wait = new WebDriverWait(getDriver(), 5);
wait.until(new ExpectedCondition<Boolean>() {
    public Boolean apply(WebDriver driver) {
        int elementCount = driver.findElement(By.xpath("xxxx")).size();
        if (elementCount == 2)
            return true;
        else
            return false;
    }
});
WebDriverWait wait=newwebdriverwait(getDriver(),5);
等待.直到(新的ExpectedCondition(){
公共布尔应用(WebDriver驱动程序){
int elementCount=driver.findElement(By.xpath(“xxxx”)).size();
if(elementCount==2)
返回true;
其他的
返回false;
}
});

来自

的代码要查找动态网页上的元素总数,我们需要使用driver.findElements().size()方法。但有时它一点用处都没有

首先获取与行计数匹配的所有元素的大小。一旦我们有了它,您就可以使用动态xpath ie替换行数和列数运行时来获取数据

{
    List<WebElement> rows_table = mytable.findElements(By.tagName("tr"));
    //To calculate no of rows In table.
    int rows_count = rows_table.size();

    //Loop will execute till the last row of table.
    for (int row=0; row<rows_count; row++){
    //To locate columns(cells) of that specific row.
    List<WebElement> Columns_row = rows_table.get(row).findElements(By.tagName("td"));
    //To calculate no of columns(cells) In that specific row.
    int columns_count = Columns_row.size();
    System.out.println("Number of cells In Row "+row+" are "+columns_count);

    //Loop will execute till the last cell of that specific row.
    for (int column=0; column<columns_count; column++){
    //To retrieve text from that specific cell.
        String celtext = Columns_row.get(column).getText();
        System.out.println("Cell Value Of row number "+row+" and column number "+column+" Is "+celtext);
    }
    System.out.println("--------------------------------------------------");
}
{
列表行\u table=mytable.findElements(按.tagName(“tr”));
//计算表中的行数。
int rows\u count=rows\u table.size();
//循环将一直执行到表的最后一行。

对于(int row=0;row您是否使用Java API?Selenium Webdriver Java我使用了driver.findElements(By.xpath(“abcd”)).size()问题已解决…相同的代码正在运行,我只是在应用过滤器后增加了等待时间,而不是等待一段时间。嘿,Matt,我是selenium的新手…不确定如何等待元素,因为该表已经存在,但是行数将动态更改…所以您可以让我知道如何等待元素吗