【问题标题】:Navigate the DOM with CasperJS使用 CasperJS 导航 DOM
【发布时间】:2014-12-24 08:38:05
【问题描述】:

我有一个网页,其中有几个trs,每个tr 内有几个tds。结构如下图所示

<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>

我可以使用

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

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

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

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

这可能吗?

【问题讨论】:

    标签: phantomjs casperjs


    【解决方案1】:

    您可以使用 casper.evaluate 或变体浏览 DOM。它在沙盒化的页面上下文中执行作为回调的 JavaScript。你不能传递复杂的对象,比如 DOM 节点。 docs 说:

    注意:评估函数的参数和返回值必须是简单的原始对象。经验法则:如果可以通过 JSON 序列化就可以了。

    闭包、函数、DOM 节点等将起作用!

    进一步阅读:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-22
      • 2010-10-14
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多