Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何验证是否刷新了表中的数据和列标题_Java_Selenium - Fatal编程技术网

Java 如何验证是否刷新了表中的数据和列标题

Java 如何验证是否刷新了表中的数据和列标题,java,selenium,Java,Selenium,给定:有一个3行5列的表和一个刷新按钮。触发“刷新”按钮后,数据以及列标题(3列标题)在每次刷新时都会发生更改,2列标题除外 我们如何使用selenium处理这种情况 谢谢假设您的表格被定义为正常: 所有其他单元格值: //table/descendant::*/td 2表达式结果可以使用 假设以上所有情况,您需要: 将3个标题单元格和15个正常单元格值收集到 还要注意的是,它提供了方便的类,在处理HTML表时可以使您的生活更轻松 通常情况下,数据是更改的,而不是表元素的属性/定位

给定:有一个3行5列的表和一个刷新按钮。触发“刷新”按钮后,数据以及列标题(3列标题)在每次刷新时都会发生更改,2列标题除外

我们如何使用selenium处理这种情况


谢谢

假设您的表格被定义为正常:

  • 所有其他单元格值:

    //table/descendant::*/td 
    
  • 2表达式结果可以使用


  • 假设以上所有情况,您需要:

  • 将3个标题单元格和15个正常单元格值收集到


  • 还要注意的是,它提供了方便的类,在处理HTML表时可以使您的生活更轻松

    通常情况下,数据是更改的,而不是表元素的属性/定位器。您能否共享它的HTML代码,以便我可以查看并提供selenium代码。但没有看到这一点,我们不能说现代控件没有使用标记,而是使用ul和li标记。
    //table/descendant::*/th[not(text()='Header 4') and not(text()='Header 5')]
    
    //table/descendant::*/td 
    
    List<String> cellsBeforeRefresh = driver
            .findElements(By
                    .xpath("//table/descendant::*/th[not(text()='Header 4') and not(text()='Header 5')] " +
                            "| //table/descendant::*/td"))
            .stream()
            .map(WebElement::getText)
            .collect(Collectors.toList());
    
    List<String> cellsAfterRefresh = driver
            .findElements(By
                    .xpath("//table/descendant::*/th[not(text()='Header 4') and not(text()='Header 5')]" +
                            " | //table/descendant::*/td"))
            .stream()
            .map(WebElement::getText)
            .collect(Collectors.toList());
    
    if (cellsBeforeRefresh.equals(cellsAfterRefresh)) {
        // tables are the same
    } else {
        //tables differ
    }