我从CasperJS开始,我对«capture»功能很感兴趣。对于«exercise»,我想要捕获表格的每一行:
<table id="idTable">
<thead>
<tr id="theader">
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</thead>
<tbody>
<tr class="" rel="xx">
<td>Content1</td>
<td>Content2</td>
<td>Content3</td>
</tr>
</tbody>
</table>
到目前为止,我在这里:
var casper = require('casper').create({
clientScripts: ["jquery.min.js"]
});
function createScreenshots() {
var i = 0;
$('#idTable > tbody > tr').each(function() {
this.captureSelector('myscreens/'+i+'.png', $(this).selector);
i++;
});
}
casper.start('mywebsite.com',function(){
this.evaluate(createScreenshots);
});
casper.run();
但没有任何作用(没有错误,但«myscreens»文件夹中没有截图)。如果有人可以告诉我的方式?
提前致谢,
Kai23
答案 0 :(得分:0)
this.captureSelector
。您需要在页面上下文之外进行迭代。
casper.start('mywebsite.com',function(){
var rows = this.evaluate(function(){
return document.querySelectorAll("#idTable > tbody > tr").length;
});
for(var i = 0; i < rows; i++) {
this.captureSelector('myscreens/'+i+'.png', '#idTable > tbody > tr:nth-of-type('+i+')');
}
});
casper.run();
答案 1 :(得分:-1)
你的jQuery版本是什么?
您是否尝试过打印$(this).selector
$('#idTable > tbody > tr').each(function() {
echo $(this).selector;
i++;
});