9W WebDriver – 遍历表元素

    欢迎回来,勇士们! 我们刚刚看到了如何检查使用和不使用 XPath 的表的特定单元格中是否存在特定的。 是时候遍历每个元素并可视化 Selenium WebDriver 的功能了。 让我们回到我们的演示站点并关注“**书籍&作者”**表以了解这一概念。

    使用其 ID “”找到“图书&作者”表。 HTML 代码如下:

    代码:

    1. WebElement BooksTable = driver.findElement(By.id("BooksAuthorsTable"));

    使用 XPath 计算行和列的总数

    让我们使用绝对 XPath 查找总行数。 请注意,XPath 以标签名称“tr”结尾。 size()方法给出使用 XPath 由findElements()返回的元素数。

    代码:

    1. int rowNum = driver.findElements(By.xpath("/html/body/form/div[5]/div/div/table/tbody/tr")).size();

    让我们稍微切换一下齿轮,并使用相对 XPath 查找总列数。

    代码:

    遍历表元素

    如果表的行和列号固定为,那么遍历每个表元素将变得非常容易。 可以使用两个for()循环,一个用于行,另一个用于访问列值。

    代码:

    1. for(int i=2; i<=6; i++){
    2. for(int j=1; j<=4; j++){
    3. System.out.print(driver.findElement(By.
    4. System.out.println("");
    5. }

    有一天,如果幸运的话,您可能会偶然发现一个表,该表在每次页面刷新时都会动态加载,因此行数通常会有所不同。 因此,每执行一次测试便要计算行数。

    首先,让我们获取所有标签名称为“”的元素,并将它们放在名为“rowVals”的列表中。

    1. List<WebElement> rowVals = BooksTable.findElements(By.tagName("tr"));

    要从第一行获取标头元素,请找到所有标签名称为“th”的元素,并将其放在名为“colHeader”的列表中。

    要将每个标题文本打印到控制台,请遍历colHeader列表中的标题值并使用getText()方法。

    1. System.out.println(colHeader.get(i).getText());
    2. }

    要将表内容打印到控制台,请遍历每一行。 对于每一行,遍历每一列,并使用相同的getText()方法打印值。

    1. for(int i=1; i<rowNum; i++){
    2. List<WebElement> colVals = rowVals.get(i).findElements(By.tagName("td"));
    3. for(int j=0; j<colNum; j++){
    4. System.out.println(colVals.get(j).getText());
    5. }

    BrainBell – 可视化! 我们大多数人都知道,为我们希望记住的概念创建心理图片比单词更清晰,更容易记住。 我们不知道或做的是仔细观察它几秒钟。 这将有助于轻松调用它。

    话虽如此,让我们看一下到目前为止讨论的整体情况!

    1. 打开 Firefox 浏览器
    2. 导航到
    3. 使用 ID 定位“图书&作者”表
    4. 使用绝对 XPath 获取总行数
    5. 使用相对 XPath 获取总列数
    6. 将行数和列数打印到控制台
    7. 通过标签名称“”获取所有行值
    8. 通过标签名称“th”获取列表中的列标题值
    9. 循环浏览标题值并将其打印到控制台
    10. 遍历表内容(每一行的所有列)并获取其文本
    11. 将值打印到控制台

    此方案的 JUnit 代码是,

    执行结果:

    到目前为止,每行代码都作为概念的一部分进行了很好的解释。

    注意到 Eclipse IDE 的 JUnit 视图后,绿色条显示测试用例已成功执行。

    控制台窗口显示没有任何错误。 它还按预期显示固定和动态计算的行数和列数的打印表内容。

    祝你今天愉快!