iam*_*all 8 javascript command-line-interface node.js phantomjs gruntjs
我开始使用Grunt并希望将变量传递给我通过exec运行的PhantomJS脚本.我希望能够做的是传递一个url,让脚本从中获取屏幕截图.任何帮助将不胜感激,谢谢!
达伦
Grunt脚本
exec('phantomjs screenshot.js',
function (error, stdout, stderr) {
// Handle output
}
);
Run Code Online (Sandbox Code Playgroud)
screenshot.js
var page = require('webpage').create();
page.open('http://google.com', function () {
page.render('google.png');
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
Cyb*_*axs 18
命令行参数可通过模块require('system').args(Module System)访问.第一个始终是脚本名称,然后是后续参数
此脚本将枚举所有参数并写入控制台.
var args = require('system').args;
if (args.length === 1) {
console.log('Try to pass some arguments when invoking this script!');
}
else {
args.forEach(function(arg, i) {
console.log(i + ': ' + arg);
});
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,解决方案是
咕噜
exec('phantomjs screenshot.js http://www.google.fr',
function (error, stdout, stderr) {
// Handle output
}
);
Run Code Online (Sandbox Code Playgroud)
screenshot.js
var page = require('webpage').create();
var address = system.args[1];
page.open(address , function () {
page.render('google.png');
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
这是一种传递和选择适用的args的简单方法.非常灵活,易于维护.
使用如下:
phantomjs tests/script.js --test-id=457 --log-dir=somedir/
Run Code Online (Sandbox Code Playgroud)
要么
phantomjs tests/script.js --log-dir=somedir/ --test-id=457
Run Code Online (Sandbox Code Playgroud)
要么
phantomjs tests/script.js --test-id=457 --log-dir=somedir/
Run Code Online (Sandbox Code Playgroud)
要么
phantomjs tests/script.js --test-id=457
Run Code Online (Sandbox Code Playgroud)
脚本:
var system = require('system');
// process args
var args = system.args;
// these args will be processed
var argsApplicable = ['--test-id', '--log-dir'];
// populated with the valid args provided in availableArgs but like argsValid.test_id
var argsValid = {};
if (args.length === 1) {
console.log('Try to pass some arguments when invoking this script!');
} else {
args.forEach(function(arg, i) {
// skip first arg which is script name
if(i != 0) {
var bits = arg.split('=');
//console.log(i + ': ' + arg);
if(bits.length !=2) {
console.log('Arguement has wrong format: '+arg);
}
if(argsApplicable.indexOf(bits[0]) != -1) {
var argVar = bits[0].replace(/\-/g, '_');
argVar = argVar.replace(/__/, '');
argsValid[argVar] = bits[1];
}
}
});
}
// enable below to test args
//require('utils').dump(argsValid);
//phantom.exit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11572 次 |
| 最近记录: |