0

我是 casperjs 的新手,我遇到了 evaluate() 函数的问题。

HTML 代码(我现在无法更改)

<table>
  <tr>
    <td>Price</td>
    <td>some other field</td>
    <td>blah</td>
    <td>foo</td>
  </tr>
  <tr>
    <td>125.3</td>
    <td>some other value</td>
    <td>something else</td>
</table>

目标是开始从这些表中抓取信息,获取每行的第一个 td,然后对它们进行处理。我遇到的问题是“每个”功能没有做任何事情。

我也试过它只是将 tr 返回到一个变量并对其执行 $.each() ,但它也不起作用。each() 在评估中不可用吗?(我的印象是在评估你有大部分的 jQuery 方法)

var evaluatedItems = this.evaluate(function() {
        var items = [];        
        $("td").filter(function() { return $.text([this]) == 'Price'; }).closest('table').find('tr').each(function() {
            var col = $(this).find('td:first');
            require('utils').dump(col);
            items.push(col);
        });
        return items;
    });
4

1 回答 1

0

阅读评论后,我意识到我所做的是放入 jQuery 库的 URL,这是不允许的。

一旦我放入实际的目录位置,它就起作用了。将其放在 casper 的实例化中更容易。

var casper = require("casper").create({
    verbose: true,
    logLevel: 'error',    
    clientScripts: ["<location of directory containing jquery>/jquery-1.7.2.min.js"]
});

但另一个选择是使用:

 page.casperInsertJs("<location of directory containing jquery>/jquery-1.7.2.min.js");
于 2013-10-14T20:39:49.153 回答