我是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;
});
答案 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");