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

如何用Selenium提取HTML中<pre>标签的多行内容?

解决
元素双击换行后文本提取与对比问题 

问题场景

  • 初始状态下,<pre>元素内容为单行:test_line1 test_line2 test_line3 test4
  • 双击后,<pre>内显示为多行格式,但提取的文本里的换行既不识别为\n也不是<br>
  • 用element.getText()提取文本后,和单行预期文本、带\n的多行预期文本对比都不生效

可行解决方案

1. 提取innerHTML而非textContent

getText()方法会自动合并所有空白字符(包括换行),而innerHTML能保留<pre>内的原始格式。可以把预期的单行文本替换空格为换行后对比:

String elementInnerHTML = element.getAttribute("innerHTML");
String expected = "test_line1 test_line2 test_line3 test4".replace(" ", "\n");
// 去除首尾可能存在的空白后对比
Assert.assertEquals(elementInnerHTML.trim(), expected.trim());

2. 标准化处理提取文本的空白字符

如果<pre>内的换行是特殊空白符(比如\r\n),可以先统一替换为标准换行:

String elementText = element.getText().replaceAll("\\s+", "\n");
String expected = "test_line1\ntest_line2\ntest_line3\ntest4";
Assert.assertEquals(elementText.trim(), expected.trim());

3. 统一转为单行格式对比

如果只需要验证内容一致,不管格式,可以把提取文本和预期文本都转为单行后对比:

String elementText = element.getText().replaceAll("\\s+", " ").trim();
String expected = "test_line1 test_line2 test_line3 test4";
Assert.assertEquals(elementText, expected);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:01:19