java - 抓取我们的网站以检查 Javascript 错误

标签 java selenium htmlunit ghostdriver

我在这里有点绝望。 几天来,我一直在尝试创建一个网络抓取工具,它可以浏览我们的网站并检查 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/

相关文章:

java - 使用 Jersey 客户端发送原始 XML?

selenium - 如何使用 Xvfb 和 Selenium 拍摄 Retina 屏幕截图

java - HtmlUnit中如何通过Xpath获取元素

java - HTMLUNIT getformbyname 网站中没有指定表单名称

java - 使用 Java 登录我的 Sprint 手机网络帐户并获取帐户详细信息的最佳方式?

java - 使用 struts2/tiles/remote data 的 Accordion 菜单

java - 在月份下拉列表中选择值 - Selenium Webdriver

python-3.x - 如何运行 chrome headless 浏览器

java - HtmlUnit HtmlSubmitInput.click() 结果 "Incorrect URL"更正为 "cgi-bin",然后导致 UnknownHostException

java - ConcurrentHashMap 的计算、computeIfAbsent 和computeIfPresent 方法是完全原子的吗?