我在这里有点绝望。 几天来,我一直在尝试创建一个网络抓取工具,它可以浏览我们的网站并检查 Javascript 错误。
最大的问题是我只懂Java,而且GhostDriver似乎不再维护了。 Ghostdriver 里的人指的是 JbrowserDriver。 然而,JBrowserDriver 没有选项从控制台收集 Javascript 错误。
然后我尝试了 HTMLUnit,它是一种急于抛出错误的方法,而不是与 javascript 相关的错误。所以摆弄了半天后,我对 HtmlUnit 认输了。
我可以恢复到普通的旧 WebDriver,但这会涉及太多的样板文件。
你们有什么建议吗?
最佳答案
您可以将一些 javascript 注入(inject)每个窗口的头部,以将所有错误记录到隐藏的 div 中。然后,Selenium 可以从该 div 获取文本,并将其解析为页面上发生的所有错误的报告。
例如,给定以下页面布局:
<html>
<head>
<script>
window.onerror = function(e) {
document.getElementById("hidden-selenium-log").innerText += e.toString() + ";";
}
</script>
</head>
<body>
<div id="hidden-selenium-log" style="display: none;">
</div>
<div id="broken-button" onclick="unknownFunction()">broken</div>
</body>
</html>
head
标记中的脚本会将所有 javascript 错误写入 div hidden-selenium-log
中。单击 div broken-button
将触发错误事件处理程序并将其记录到隐藏的 selenium 日志中。
与页面交互后,您可以执行一些简单的操作,例如:
Driver.FindElement(By.Id("hidden-selenium-log")).text.split(";");
这将获取隐藏的 Selenium 日志中的文本,然后用分号分隔它,分号是我在记录每个错误后附加的字符。
关于java - 抓取我们的网站以检查 Javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36572886/