2014-12-21 2 views
0

Я использовал jquery в casperjs. , но возврат данных - null.casperjs jquery return data is null

Проверив код, но я не знаю ..

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> 

код расслоение плотной ....

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") возвращает "aaa.html" в html javascript ..

что не так?

ответ

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"); 

работает нормально. Вы только что допустили ошибку ввода идентификатора таблицы: это bd_lst вместо bd_list.

Надеюсь, это полезно!

+0

спасибо .. ваш комментарий. но пример html-кода. Проблема заключается не в селекторе jquery, а в casperjs. мой код jquery работает .. тоже. но не возвращать значение внутри casperjs. – Kang

+0

@Kan: ОК. Вы хотите использовать casper для соскабливания или для тестирования? – Academia

+0

@Kan: Ваша функция оценки работает нормально. Вы только что ввели ошибку ввода в table'id: это 'bd_lst' вместо' bd_list'. – Academia