【问题标题】:PhantomJS, but not headless?PhantomJS,但不是无头的?
【发布时间】:2014-09-06 07:31:50
【问题描述】:

有没有办法实时查看 PhantomJS(或类似的)正在渲染的内容?

我想在与目标页面交互(或至少查看其屏幕截图)的同时开发我的自动化脚本。

【问题讨论】:

  • 你能用 Selenium/webdriver 代替吗?您可以以与 phantomjs 类似的方式运行测试,但在真实浏览器中。它现在支持 phantom 作为浏览器,因此您可以继续与(慢得多的)浏览器一起使用它。

标签: phantomjs headless-browser


【解决方案1】:

这个问题的解决方法是使用远程调试器:

--remote-debugger-port=9000

不建议使用 slimerjs 通过浏览器测试脚本,因为它基于 gecko,这意味着脚本可能在 slimerjs 上运行,而不是在 phantomjs 上运行,反之亦然。

查看本指南以获取更多信息... https://drupalize.me/blog/201410/using-remote-debugger-casperjs-and-phantomjs

【讨论】:

    【解决方案2】:

    不,没有这样的事情。 SlimerJS 具有与 PhantomJS 相同的 API,但运行 Gecko 引擎。你可以直接看到正在发生的事情并使用xvfb-run 无头运行它。

    您将无法与之互动。当测试很长时,如果您没有发现测试用例中的问题,您可能不想再次运行测试套件。


    调试 PhantomJS 脚本的明显方法是使用 page.render() 渲染许多屏幕截图,并使用

    将一些对象记录到控制台
    console.log(JSON.stringify(yourObj, undefined, 4));
    

    格式不错。

    【讨论】:

      【解决方案3】:

      我的建议是同时使用日志记录。 http://casperjs.org/

      CasperJS 是一个用 Javascript 编写的开源导航脚本和测试实用程序,用于 PhantomJS WebKit 无头浏览器和 SlimerJS (Gecko)。它简化了定义完整导航场景的过程,并为执行常见任务提供了有用的高级函数、方法和语法糖,例如:

      • 定义和排序浏览导航步骤
      • 填写和提交表格
      • 点击和关注链接
      • 截取页面(或部分页面)的屏幕截图
      • 测试远程 DOM
      • 记录事件
      • 下载资源,包括二进制资源
      • 编写功能测试套件,将结果保存为 JUnit XML
      • 抓取网页内容

      【讨论】:

        【解决方案4】:

        我们使用的解决方案是在出现异常时自动截屏,phantomJs 会将当前页面渲染成一个文件供您稍后检查。

        这是测试执行阶段。

        当您编写测试时,只需在您尝试测试的应用程序中打开额外的窗口(“普通浏览器”)并根据它设计测试。

        设计完成后,使用 phantomJS 执行测试。

        【讨论】:

        • 不好的是,您有 很多 的屏幕截图需要浏览并拼凑以了解发生了什么。好消息是,当某些事情无法计划时,您有时间在这些屏幕截图中寻找问题。这对于我的回答中的自动浏览器窗口来说很难做到。
        猜你喜欢
        • 1970-01-01
        • 2016-09-23
        • 1970-01-01
        • 2018-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多