我的网页有多个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中导航到元素的子元素。
这可能吗?
答案 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