使用Phantom.js进行无头Browserify JavaScript测试
Headless Browserify JavaScript Testing with Phantom.js
我正试图找到一种方法来执行以下步骤。
- 为浏览器编写Node.js代码
- 使用browserfy编译代码
- 在终端中测试浏览器代码
我很想得到浏览器接收到的console.logs
,但在终端内。这不仅可以节省我的时间(从创建HTML文件、运行服务器、打开浏览器),还可以进行一些很酷的事情,比如部署前的自动测试。
我正在尝试使一个名为headless-test.js
的东西成为一个phantomjs
脚本,该脚本将使用system.args[1]
和fs.read
传递参数
var content = fs.read(system.args[1])
page.content = '<html><body><script type="text/javascript">'+content+'</script></body></html>'
这将允许我做这样的事情:
phantomjs ./headless-test.js ./bundle.js
我收到了这个错误SyntaxError: Multiline comment was not closed properly
,所以请确保你的bundle.js
是错误的。
如果我能让下面的演示发挥作用,所有这些都将是令人惊叹的。最小可行产品:
var system = require("system")
var webPage = require('webpage')
var page = require('webpage').create()
page.content = '<html><body><script type="text/javascript">console.log("hello world")</script></body></html>';
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.evaluate(function(){
})
phantom.exit();
这里的预期结果是:
$ phantomjs ./headless-test.js
hello world
然而,我没有收到来自幻影的stdout
。
如果您将某个值分配给page.content
,则会立即对其求值,但之后您将从页面上下文注册到console.log()
。您只是错过了页面中script元素中的console.log()
。
将page.content
赋值移动到page.onConsoleMessage
函数之后。
var system = require("system")
var webPage = require('webpage')
var page = require('webpage').create()
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
}
var fs = require("fs")
var content = fs.read(system.args[1])
page.content = '<html><body><script type="text/javascript">'+content+'</script></body></html>'
phantom.exit();
我为此制作了一个节点工具:https://github.com/mantoni/phantomic
如果你也想使用Mocha作为测试框架,可以试试Mochify(https://github.com/mantoni/mochify.js)。它使用phantomic
和brout
将控制台输出正确地输入到终端。
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 如何从Java/scala调用js美化程序
- 如何使用json将对象列表从java转换为javascript
- Java脚本时间添加
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 如何将字符串值从php页面发送到java脚本页面
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- DOM事件通过JSON转换为java
- 当使用Watchify时,Browserify+Babelify Gulp任务没有终止
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- Java-彩票统计解析器
- 如何将变量数据从Java类获取到JavaScript
- Java脚本将URL转换为已保存的URL时出错
- Gulp Browserify combine JS