刮刮我们的网站以检查Javascript错误

时间:2016-04-12 12:11:23

标签: java selenium htmlunit ghostdriver

我在这里绝望。 几天来,我一直在尝试创建一个可以浏览我们网站并检查Javascript错误的网络抓取工具。

最大的问题是我只知道Java,似乎GhostDriver不再维护了。来自Ghostdriver的人指的是JbrowserDriver。 但是,JBrowserDriver无法从控制台收集Javascript错误。

然后我尝试了HTMLUnit,这是渴望抛出错误,而不是javascript相关的方式。所以在摆弄了半天之后,我就在HtmlUnit上沾上了毛巾。

我可以恢复到普通的旧WebDriver,但这将涉及太多的样板。

你们其中有人有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以在每个窗口的head部分注入一些javascript,将所有错误记录到隐藏的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日志中的文本,然后用分号分割,这是我记录每个错误后附加的字符。

答案 1 :(得分:0)

默认情况下禁用日志记录。您可以通过设置构建器启用它。

Settings settings = Settings.builder()
        .logJavascript(true)
        .build();
JBrowserDriver jBrowserDriver = new JBrowserDriver(settings);

jBrowserDriver.get("http://example.com");

Logs logs = jBrowserDriver.manage().logs();
LogEntries logEntries = logs.get("javascript");
logEntries.forEach(System.out::println);