2014-12-21 59 views
0

我在casperjs中使用jquery。 但返回數據爲空。casperjs jquery返回數據爲空

檢查代碼,但我不知道..

HTML代碼....

<table id="bd_lst" class="bd_lst"> 
<tr class="notice"> 
    <td class="cate">aaaaa</td> 
    <td class="title"><a href="11111.html">11111</a></td> 
</tr> 
<tr class="notice"> 
    <td class="cate">bbbb</td> 
    <td class="title"><a href="22222.html">22222</a></td> 
</tr> 
...................... 
<tr> 
    <td class="cate">cccc</td> 
    <td class="title"><a href="aaa.html">3333</a></td> <== i want return data "aaa.html" 
</tr> 
<tr> 
    <td class="cate">ddddd</td> 
    <td class="title"><a href="bbbb.html">4444</a></td> 
</tr> 
</table> 

js代碼是....

var start_link = this.evaluate(function(){ 
    return $("#bd_list tr.notice").last().next().find(".title a").attr("href"); 
}); 

START_LINK爲空.. (「table tr.notice」)。last()。next()。find(「。title a」)。attr(「href」)在html javascript中返回「aaa.html」。

有什麼不對?

回答

0

如果你想只檢查第一錨標記的href值,使用:

$('td.title > a').first().attr('href'); 

使用casperjs刮樣品DOM:

var casper = require('casper').create(); 

casper.start('http://my-site.com/examples/casperjs/sample.html', function() { 
    var start_link = this.evaluate(function(){ 
     return document.querySelector('td.title > a').getAttribute('href'); 
    }); 
    this.echo(start_link); 
}); 

casper.run(); 

如果你想使用jQuery與casperjs,你必須讓jQuery可用於clientScripts選項像以下:

var casper = require('casper').create({ 
    verbose: true, 
    clientScripts: ['jquery-1.9.1.min.js'] 
}); 

casper.start('http://my-site.com/examples/casperjs/sample.html', function() { 
    var start_link = this.evaluate(function(){ 
     return $('td.title > a').first().attr('href'); 
    }); 
    this.echo(start_link); 
}); 

casper.run(); 

你已經使用了選擇:

$("#bd_lst tr.notice").last().next().find(".title a").attr("href"); 

工作正常。您剛剛輸入表格ID時發生錯誤:它是bd_lst而不是bd_list

希望它有用!

+0

謝謝..您的評論。但是html代碼就是例子。問題不是jQuery選擇器,casperjs評估返回。我的jquery代碼也在工作。但不會返回casperjs中的值。 – Kang

+0

@Kan:好的。你想使用casper進行刮擦或測試? – Academia

+0

@Kan:你的評價函數工作正常。你只是在table'id中提交了一個輸入錯誤:它是'bd_lst'而不是'bd_list'。 – Academia