使用CasperJS导航DOM

时间:2014-12-24 08:38:05

标签: phantomjs casperjs

我的网页有多个tr个,每个tr内有几个td。结构如下所示

<tr bgcolor="#FFFFFF">
<td class="td1" style="text-align:left">TGHD03WYD15UGS</td>

<td class="td1" style="text-align:left">
    <font style="font-weight:bold"> TicketType</font>
    :The Grand Hotel, New Delhi,
    <font style="font-weight:bold"> FirstName</font>
    :Sanjali,
    <font style="font-weight:bold"> LastName</font>
    :Garg
</td>

我可以使用

获取tr的列表
this.getElementsInfo('selector');

当我遍历列表时,我确实得到tr,但td仅以html格式显示。我想要的是可以使用属性访问的td个对象。如果从保存字体标记对象的最后td获取内部对象,情况也是如此。

如果我可以在真实的javascript场景中浏览DOM,我将能够获取所有对象并且能够访问其中的属性。

到目前为止,在CasperJS中看起来并不可能。所有我都进入html属性,它给了我一个该元素的字符串表示,而不是给我对象本身。我想在真正的javascript中导航到元素的子元素。

这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用casper.evaluate或变体导航DOM。它执行作为沙箱中页面上下文中的回调给出的JavaScript。您无法传递DOM节点等复杂对象。 docs说:

  

注意: evaluate函数的参数和返回值必须是一个简单的原始对象。经验法则:如果它可以通过JSON序列化,那就没关系了。

     

闭包,函数,DOM节点等将工作!

进一步阅读:

Understanding the evaluate function in CasperJS
Why doesn't this.evaluate return DOM nodes correctly?
Iterating over a grid with CasperJS