PhantomJS 获取特定元素的位置数组

PhantomJS get array of positions for specific element

我想使用 phantomjs 获取页面上特定标签的位置。例如对于 <a> 标签我想得到这个数组:

[
   {
       tag: "a",
       x: 12,
       y: 32,
       width: 100,
       height: 30
   },
   ...
]

我写了这段代码:

page.open(url, function(status){
   ....
   ....
   var a_tags = page.evaluate(function() {
                     return document.getElementsByTagName('a');
                });

   for(index in a_tags){
      console.log(a_tags[index].getBoundingClientRect());
   }
   ....
   ....
})

但是这段代码returns出错了:

TypeError: null is not a function (evaluating 'a_tags[index].getBoundingClientRect()')

如何使用 phantomjs 从页面获取此信息,我的代码有什么问题?

我找到了解决方案:

var a_tags = page.evaluate(function() {
      var tags = document.getElementsByTagName('a');
      var res = [];
      for(var index = 0 ; index < tags.length ; index++) {
          var element = tags[index];
          var rect = element.getBoundingClientRect();
          if(rect.left == 0 && rect.top ==0 || rect.width ==0 && rect.height ==0){
                     continue;
          }
          res.push({
                tag: "a",
                rect: rect,
          });
      }
      return res;
});