【发布时间】:2013-09-28 02:57:15
【问题描述】:
我试图展示两个 HTML 页面的不同之处。我试图找出一种方法,如果我可以比较两个网页的 HTML 源代码(几乎相似),并在视觉上显示/突出显示差异(在 UI 上)。
我的尝试:我想拍摄页面快照,然后使用Resemble.js 比较两张图片。但这也显示出非常细微的差异,结果也不清楚。
我想比较一下 DOM 结构或源代码,然后在 UI 上显示两个页面的实际不同之处。
有什么方法可以实现吗?我正在使用Selenium- Webdriver 来获取快照和 HTML 源代码。
编辑:
我想我的问题并不清楚。实际上,我想找出网页 HTML 内容的差异,以便检测当前正在执行的 A/B 测试。我首先将 html 源代码抓取到一个文本文件中,然后使用 Java-Diff util 将其与之前捕获的 HTML 源代码进行比较。这给了我在两个带有 HTML 源代码的文本文件中不同的实际行。
现在,问题是,我如何在 UI 上显示这种差异,就像突出显示我发现的不同区域一样?希望这会让它更清楚。
下面的代码显示了不同的行
List<String> original = fileToLines("HTML Source diff/originalSource.txt");
List<String> revised = fileToLines("HTML Source diff/sourceAfterCookieClear.txt");
// Compute diff. Get the Patch object. Patch is the container for computed deltas.
Patch patch = DiffUtils.diff(original, revised);
System.out.println("Printing Deltas\n");
for (Delta delta : patch.getDeltas()) {
String revisedText = delta.getRevised().toString();
String content = revisedText.substring(revisedText.indexOf(" [")+2,revisedText.indexOf("]]"));
writeTextToFile(content,"difference.html");
}
任何代码形式的线索都会有所帮助。
【问题讨论】:
-
我正在以编程方式考虑任何解决方案
-
您自己已经解决了这个问题吗?我正在尝试构建类似的东西,只是使用代码更改的热图,所以这对我来说非常有趣,如果已经存在我至少可以构建的解决方案。
-
您是如何保存 HTML 文件本身的?美化?还是您使用“driver.getSourcePage”将其保存为长字符串?
-
另一个简单的可能性是 recheck-web Chrome 扩展 (chrome.google.com/webstore/detail/recheck-web-demo/…)。默认情况下,它会为您提供两个网站的所有差异,包括视觉或“隐藏”网站。但是过滤器功能可以让您专注于您真正想要的内容,并在屏幕截图中标记这些内容。
-
看看这个:lxml.de/api/lxml.html.diff-module.html#htmldiff。由于这个问题不接受答案,我无法给出详细的答案,但文档应该足够了。
标签: java javascript html comparison