【发布时间】:2013-07-24 11:00:01
【问题描述】:
我正在尝试测试 CasperJS,并且正在抓取一个具有如下网格布局的网站:
|Name |Name |
|Title |Title |
|Image |Image |
|Something |Something |
|----------------------
|Name |Name |
|Title |Title |
|Image |Image |
|Something |Something |
|----------------------
如果我不使用 CasperJS,我将检索所有包含的列表(本例中为 4 个),然后在每个容器上运行一个方法,该方法可以检索具有所需属性的对象。
我似乎很难在 CasperJS 中做到这一点。首先我尝试在 casper.evaluate(function(){....}) 中返回 DOM 元素列表,但它无法返回 DOM 元素。
然后我尝试创建一个 each 循环,它将所需的对象 (4) 推送到一个数组并在 Evalue 中返回它,但它一直返回 null。
如何在 CasperJS 中做这样的事情。我能否以某种方式将容器的上下文返回给方法,该方法可以将对象返回给主评估,该方法可以返回对象的集合?
【问题讨论】:
-
您正在与 Casper 的主要概念发生冲突。服务端和客户端JS的分离。在评估之外,它只是服务器,没有 DOM。桥是可序列化的对象。这两个答案很好地解释了它。注意示例中的 getLinks 函数如何返回字符串数组,而不是 DOM 节点。docs.casperjs.org/en/latest/quickstart.html
标签: javascript dom phantomjs casperjs javascript-objects