是否有可能在页面中传递变量。在我的情况下,我的情况下是什么?
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(); }
});
}
我尝试了在互联网上找到的几种方法,但实际上没有什么方法可以得到它的变量。
提前感谢您的帮助:)
答案 0 :(得分:67)
像往常一样,答案在evaluate
var title = page.evaluate(function(s) {
return document.querySelector(s).innerText;
}, 'title');
console.log(title);
函数的documentation中明确说明:
从PhantomJS 1.6开始,JSON可序列化的参数可以传递给函数。在以下示例中,提取DOM元素的文本值。以下示例实现与前一示例相同的最终目标,但该元素是基于传递给evaluate调用的选择器选择的:
以下示例演示了用法:
{{1}}
答案 1 :(得分:2)
我有phantomjs 1.5.0,所以我没有编译1.6或更高版本,而是寻求替代解决方案:
所以我保存了selectors.js文件的参数
-------------selectors.js starts----------------
var selectors = "div.nice"
-------------selectors.js ends----------------
然后将它们注入页面:
page.injectJs("selectors.js");
可在此处找到更多详细信息:http://phantomjs.org/api/webpage/method/inject-js.html
答案 2 :(得分:0)
我使用幻像4.0.4,以下对我有用的https://www.npmjs.com/package/phantom
var arg = 'test'
page.evaluate(function(arg) {
console.log(arg)
}, arg);