8

के माध्यम से फ़ैंटॉमजेएस में एक वैरिएबल पास करना मैं ग्रंट के साथ शुरुआत कर रहा हूं और एक चर को पास करने के लिए एक फैंटॉमजेएस स्क्रिप्ट में पास करना चाहता हूं जिसे मैं exec के माध्यम से चला रहा हूं। मैं जो करने में सक्षम होना चाहता हूं वह स्क्रिप्ट के लिए स्क्रीन कैप्चर करने के लिए एक यूआरएल पास करता है। किसी भी सहायता का स्वागत है, धन्यवाद!निष्पादन

डैरेन

ग्रंट स्क्रिप्ट

exec('phantomjs screenshot.js', 
    function (error, stdout, stderr) { 
     // Handle output 
    } 
); 

screenshot.js

var page = require('webpage').create(); 
page.open('http://google.com', function() { 
    page.render('google.png'); 
    phantom.exit(); 
}); 

उत्तर

17

कमान लाइन तर्क मॉड्यूल require('system').args (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); 
    }); 
} 

आपके मामले में, समाधान

ग्रंट

exec('phantomjs screenshot.js http://www.google.fr', 
    function (error, stdout, stderr) { 
     // Handle output 
    } 
); 

screenshot.js है

var page = require('webpage').create(); 
var address = system.args[1]; 
page.open(address , function() { 
    page.render('google.png'); 
    phantom.exit(); 
}); 
7

यहाँ गुजरती हैं और आर्ग लेने के लिए एक आसान तरीका है जो लागू हैं बहुत लचीला और बनाए रखने में आसान है।


उपयोग की तरह:

phantomjs tests/script.js --test-id=457 --log-dir=somedir/ 

या

phantomjs tests/script.js --log-dir=somedir/ --test-id=457 

या

phantomjs tests/script.js --test-id=457 --log-dir=somedir/ 

या

phantomjs tests/script.js --test-id=457 

स्क्रिप्ट:

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(); 
संबंधित मुद्दे