Phantomjs转储dom对象

时间:2015-05-11 12:52:50

标签: phantomjs

我是Phantomjs的新手。为了在远程服务器上进行调试,我经常要转储一个DOM对象来查看结构(类似于Perl中的Data :: Dumper)。目前这是为了抓取几个网站。

我认为JSON.stringify可能对此有所帮助,但它仍然显示对象名称,如“[object HTMLDocument]”

编辑:我也看了JavaScript: how to serialize a DOM element as a string to be used later?,但我似乎无法在phantomjs中注入jquery(仍在寻找解决方案,并且不愿意依赖),另一个答案不是似乎工作。我认为Phantom分析DOM是一种常见的情况,我认为幻影用户通常可以找到解决方案。

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

page.onConsoleMessage = function(msg) {
        console.log( msg );
}

page.open('http://www.test.com', function(status) {
       if(status !== "success") {
                console.log( status );
       } else {
                page.evaluate(function() {

                    var headline = document.querySelectorAll('div');
                    console.log(  JSON.stringify( headline )  ); // HERE???

                });
        }
        phantom.exit();
});

有没有办法做到这一点,还是我接近这个错误?

1 个答案:

答案 0 :(得分:1)

<{1>}中的

,您可以使用function splitTime(time) { const first32 = time & 0xFFFFFFFF; const first16 = first32 & 0xFFFF; const second16 = first32 >>> 16; const third16 = Math.floor((time / 0xFFFFFFFF) & 0xFFFF); return [first16, second16, third16]; } 转换您想要字符串的DOM节点。

  <ul class="pagination">
    <li class="disabled"><a href="#">&laquo;</a></li>
    <li class="active"><a href="#">1</a></li>
    <li><a href="#">2</a></li>
    <li><a href="#">3</a></li>
    <li><a href="#">4</a></li>
    <li><a href="#">5</a></li>
    <li><a href="#">&raquo;</a></li>
 </ul>

我还没有尝试使用&#34; querySelectorAll&#34;,因为它可能返回数组而不是独立的DOM节点,但它肯定适用于DOM节点。

MDN Link