我正在重写一个用于总结回归测试结果的脚本。被测试的程序会输出几个不同的文本文件,这些文件在代码版本之间的任何变化都是开发人员感兴趣的。旧脚本对每个文件使用命令行 diff 实用程序,这需要相当长的时间(有 2000 个测试,每个测试要比较 3 个文件。这在我们的标准开发机器上大约需要 30 分钟)。然后它生成了一个 HTML 文件,其中包含一个表,其中包含指向所有非空差异的链接。
作为一名开发人员,我开始意识到,虽然它们通常很有用,但其中大多数差异从未被查看过。我必须加快这个过程的一个想法是使用 Python filecmp.cmp 工具比较文件,并创建一个包含所有差异的表。然后,使用 diff_match_patch 工具,使用 Javascript 仅区分被点击的链接。这些结果将显示在浏览器中。我想我了解 diff_match_patch 的 API,但我一直在尝试将这些文件加载到 Javascript 环境中。
我已经尝试在 iframe 中打开这些文件(我会将其设为不可见),但是一旦文件打开,我似乎无法访问它们的内容。我意识到有同源规则,但我会从与 html 文件所在的同一驱动器中读取文件,我认为这应该是合法的(?)。我不确定我的问题是否与我对 DOM 的理解有关,或者这是不可能的。我对 Javascript 的了解很少/过时,这可能是真正的问题,但这似乎是一个奇怪的用例,所以我很难找到任何示例。如果浏览器有问题,我确实有能力规定使用哪个浏览器。这是我到目前为止所拥有的,这只是一个测试,看看我已经加载了什么以及我正在访问什么。在 Chrome 中我没有添加到 div 中,而在 Firefox 中我得到“
<html>
<head>
<script type="text/javascript" language="JavaScript">
function changeSrc() {
var base = document.getElementById("base");
base.src="../result/test1.txt";
var mod = document.getElementById("mod");
mod.src="../result/test2.txt";
var result = mod.contentWindow.document.body.innerText;
document.getElementById('result').innerHTML = '<BR>' + result;
}
</script>
</head>
<body>
<iframe id="base" src=""></iframe>
<iframe id="mod" src=""></iframe>
<br>
<span onClick="changeSrc();" style="cursor: pointer;">loadFiles</span>
<br>
<div id="result"></div>
</body>
</html>
我会很感激任何帮助完成这项工作,或者告诉我我在浪费时间的建议。我也对其他开箱即用的想法持开放态度。也许节省时间,因为我需要运行 filecmp.cmp,不值得麻烦吗?提前致谢!
编辑:我猜这个问题是两部分的:1)如何读取文本文件以在 Javascript 函数中使用(作为字符串)?2)这是一个坏主意吗?