PhantomJS 控制台.log对象输出 [对象对象]

PhantomJS console.log objects outputs [object object]

本文关键字:对象 输出 PhantomJS log 控制台      更新时间:2023-09-26

我使用以下代码来获取页面内的所有img标签:

"use strict";
var system = require('system');
var args = system.args;
var page = require('webpage').create();
page.onLoadStarted = function () {
    console.log('Loading Page...');
};
page.onLoadFinished = function (status) {
  console.log('Loading finished.');
  var imgs = page.evaluate(function() {
    console.log(document.images);
    console.log(document.images.length);
    return document.images;
    });
  for (var i = 0; i < imgs.length; i++){
    //console.log(JSON.stringify(imgs[i]));
    console.log(imgs[i]);
    console.log(imgs[i].alt);
    }
  phantom.exit();
};
page.open(system.args[1]);

它按预期正确输出替代文本,但在以下行:

console.log(imgs[i]);

它只输出:"[对象对象]"我希望获得所有的 img 标签代码,如果我使用 JSON.stringify,它会输出一个非常长的 msg,它也不是我想要的 img 标签代码。

谁能解释一下发生了什么?我如何获得 img 标签代码?

> 这是怎么回事?不知道说实话。我怀疑您正在将PhantomJS记录Element对象的处理与Chrome的JS控制台进行比较,后者将实时引用显示为标签而不是[Object object]。如果您要从Chrome alert(imgs[i]),则会看到[Object HTMLImageElement]

你会从console.log(imgs[i].outerHTML);得到你想要的。

请参阅Element.outerHTML