有没有办法将对象传递给casper.js'evaluate()?
我看到这个线程,看起来像没有办法传递复杂的对象来evaluate()
https://groups.google.com/forum/#!topic/casperjs/x7I8LDFwFJ0
所以,如果我写一个对象,并希望分享不同的evaluate()
,我该怎么做?
让我们来说一些这样的愚蠢的对象,我想一次又一次地使用getData函数:
var testObj = (function() { var a = 1; function test1(b) { return (a+b); } return { getData : function(arg) { return (test1(3) + arg); } } })();
有没有可能的解决方法?
更新1:
我的意思是传递对象的function。 像下面一样,但不起作用(返回null
):
var casper = require('casper').create(); casper.start('about:blank', function() { var TestObj = function() { var a = 1; function test1(b) { return (a+b); } return { getData : function(arg) { return (test1(3) + arg); } } } var testObj = new TestObj(); this.echo(casper.evaluate(function(myObject ) { return myObject.getData(100); }, testObj)); }); casper.run(function() { this.exit(); });
不幸的是,你不能传递一个复杂的结构来评估(),因为传递给evaluate()的任何参数都是JSON.parse(JSON.stringify(arg))。
但这并不意味着你不能通过另一种物体。
关于如何传递一个JSON对象来评估的例子。
var casper = require('casper').create(); casper.start('about:blank', function() { var JSONObject = { arg1: 'val1' , arg2: 'val2' }; this.echo(casper.evaluate(function(myObject ) { return JSON.stringify(myObject); }, JSONObject)); }); casper.run(function() { this.exit(); });
关于如何传递一个基本对象来评估的例子。
var casper = require('casper').create(); casper.start('about:blank', function() { obj = new Object(); obj.param1 = "value1"; obj.param2 = "value2"; this.echo(casper.evaluate(function(myObject ) { return JSON.stringify(myObject); }, obj)); }); casper.run(function() { this.exit(); });
关于如何传递一个带参数的函数来评估的例子。
var casper = require('casper').create(); casper.start('about:blank', function() { var arg1 = "value1"; var arg2 = "value2"; this.echo(casper.evaluate(myFunction, arg1, arg2)); }); casper.run(function() { this.exit(); }); function myFunction(arg1, arg2) { return arg1 + "-" + arg2; }
你可以使用clientScripts选项传递像jQuery这样的脚本 – 我可以在CasperJS中使用jQuery吗 ? 你可以做自定义脚本,并有很好的代码分离。
var casper = require('casper').create({ clientScripts: ["includes/jquery.min.js", "lib/my-custom-script.js"] }); casper.start(function () { this.evaluate(function () { window.customFunction(); }); });
LIB / MY-定制scripts.js中:
window.customFunction = function () { /* do stuff */ };
希望这可以帮助。
- 编写TypeScript并发布浏览器和节点的库
- Webpack – 如何在基础HTML中要求结果文件(最佳实践)
- 传递给callback函数?
- asynchronous:服务器启动后连接到MongoDB
- 在控制器的angularjs中将parameter passing给资源工厂以在数据库中进行search
- XMLHttpRequest无法加载https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=
- 在nodejs混乱中返回next()
- ipython相当于javascript / coffeescript为node.js?
- MySQL捆绑在一个NPM应用程序中