casperJS评估和jquery方法

时间:2013-10-04 21:16:33

标签: jquery casperjs

我是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(),但它也不起作用。每个()是否都没有评估? (我的印象是,在评估中你有大多数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;
    });

1 个答案:

答案 0 :(得分: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");