将变量传递到page.evaluate-PhantomJS

将变量传递到page.evaluate-PhantomJS,phantomjs,Phantomjs,是否可以在页面中传递变量。请在下面的示例中进行评估 function myFunction(webpage, arg1, arg2){ var page = require('webpage').create(); page.viewportSize = { width: 1920, height: 1080 }; page.open(webpage, function (status){ if (status == 'success') { page.

是否可以在页面中传递变量。请在下面的示例中进行评估

function myFunction(webpage, arg1, arg2){

var page = require('webpage').create();

page.viewportSize = { width: 1920, height: 1080 };

page.open(webpage, function (status){

    if (status == 'success') {

            page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", function(){

                page.evaluate(function(){

                    arg = arg1 + arg2;
                    console.log(arg);

                });

            });

    } 

    else { phantom.exit(); }

});

}
我尝试了几种在互联网上找到的方法,但实际上没有什么不可能找到它的变量


提前感谢您的帮助:)

与往常一样,答案在of
evaluate
功能中明确说明:

从PhantomJS 1.6开始,JSON可序列化参数可以传递给函数。在下面的示例中,将提取DOM元素的文本值。以下示例实现了与前一示例相同的最终目标,但元素是基于传递给evaluate调用的选择器选择的:

下面的示例演示了该用法:

var title = page.evaluate(function(s) {
    return document.querySelector(s).innerText;
}, 'title');
console.log(title);

我有phantomjs 1.5.0,因此我没有编译1.6或更高版本,而是选择了另一种解决方案:

因此,我已将参数保存到selectors.js文件中

-------------selectors.js starts----------------
var selectors = "div.nice"
-------------selectors.js   ends----------------
然后将它们注入页面:

page.injectJs("selectors.js");

更多细节可以在这里找到:

我使用phantom 4.0.4,下面是我的作品


这不是我想做的,我想能够得到作为参数传递给我的函数的变量。你有没有分析并尝试我的答案?我相信您要做的是:page.evaluate(函数(arg1,arg2){console.log(arg1+arg2);},arg1,arg2);。是的,我想那样做!非常感谢迪在玩它之前也有点被甩了。我相信这更清楚:
page.evaluate(函数(str,obj){…},{myString',{foo:'bar})
我知道这个答案是2013年的,但确实应该对它进行编辑,以便注释中解释的语法与答案本身中显示的语法相同,这样2017年(或更高版本=)的访问者就不必通过注释线程来获得实际答案。
var arg = 'test'
page.evaluate(function(arg) {
    console.log(arg)
}, arg);