You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按顺序打印表格元素?Selenium代码调试求助

问题修正:Selenium表格顺序打印与调试日志过多

一、问题分析

  1. 调试日志泛滥:Selenium依赖的AsyncHttpClient等组件默认输出DEBUG级日志,导致控制台被大量调试信息占据。
  2. 表格打印逻辑错误:原代码重复打印表头和所有单元格,未按照表格的行顺序逐行打印元素。

二、解决方案

1. 关闭调试日志

通过添加系统属性,将日志级别调整为INFO或更高,抑制DEBUG日志输出。

2. 修正表格遍历逻辑

正确的遍历方式是:

  • 先定位到目标表格(避免页面有多个表格时出错)
  • 获取表格的所有行(<tr>元素)
  • 遍历每一行,获取该行内的所有单元格(表头行取<th>,数据行取<td>)
  • 逐行打印每个单元格的文本

三、修正后的完整代码

import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;

public class Softwaretestingo {
    public static void main(String[] args) throws Exception {
        // 抑制Selenium调试日志
        System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "info");
        System.setProperty("io.netty.util.internal.logging.InternalLoggerFactory", "slf4j");
        System.setProperty("org.asynchttpclient.loggerLevel", "info");

        // 初始化浏览器
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();
        driver.get("https://softwaretestingo.blogspot.com/2020/09/static-table.html");
        
        // 定位目标表格(避免页面多表格干扰)
        WebElement targetTable = driver.findElement(By.xpath("//table"));
        
        // 获取表格所有行
        List<WebElement> rows = targetTable.findElements(By.tagName("tr"));
        
        // 逐行遍历打印
        for(WebElement row : rows) {
            // 获取当前行的所有单元格(包含表头th和数据td)
            List<WebElement> cells = row.findElements(By.xpath(".//th|.//td"));
            // 打印当前行的所有单元格文本,用制表符分隔
            for(WebElement cell : cells) {
                System.out.print(cell.getText() + "\t");
            }
            // 每行结束换行
            System.out.println();
        }
        
        // 关闭浏览器,释放资源
        driver.quit();
    }
}

四、代码说明

  1. 日志抑制:通过设置系统属性,将相关组件的日志级别设为INFO,彻底屏蔽DEBUG级别的调试信息。
  2. 精准定位:先定位单个表格元素,再在该元素范围内查找行和单元格,避免页面存在多个表格时的错误匹配。
  3. 顺序遍历:遍历每一行,再遍历该行内的所有单元格,保证输出顺序与表格实际展示顺序完全一致。
  4. 格式优化:用制表符分隔单元格文本,输出结构更接近原表格,可读性更强。
  5. 资源清理:添加driver.quit()关闭浏览器,避免残留进程占用资源。

内容的提问来源于stack exchange,提问作者Sanjay Mardi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:35:32