методы оценки casperJS и jquery

Я новичок в casperjs, и у меня возникла проблема с функцией оценки().

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

person matt    schedule 04.10.2013    source источник
comment
Это работает, только если jQuery загружен внутри контекста DOM.   -  person mike    schedule 07.10.2013
comment
Как я могу это сделать? Спасибо. (Если вы опубликуете ответ, я могу пометить его как ответ) РЕДАКТИРОВАТЬ: я нашел это на их сайте: casper.page.injectJs('/path/to/jquery.js'); это ты предлагаешь?   -  person matt    schedule 07.10.2013
comment
Я попробовал это, и это все еще не сработало.... Есть ли у кого-нибудь какие-либо предложения, используя мою функцию (this.evaluate(function() {...   -  person matt    schedule 07.10.2013
comment
Собственно теперь заработало. Если вы создадите ответ, я приму его.   -  person matt    schedule 08.10.2013
comment
Не стесняйтесь добавлять свой собственный ответ на этот вопрос вместе с фрагментом кода, который решил вашу проблему. Это нормально принимать ваши собственные ответы.   -  person Jay    schedule 11.10.2013
comment
Выполнено. Я подумал, что, поскольку я не совсем понял это сам, но именно Майк указал мне правильное место, я хотел высказать ему мнение о создании ответа, чтобы я мог его принять.   -  person matt    schedule 15.10.2013


Ответы (1)


Прочитав комментарии, я понял, что ввожу URL-адрес библиотеки jQuery, что не разрешено.

Как только я указал фактическое местоположение каталога, это сработало. Проще было поставить его в инстанцировании каспера.

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");
person matt    schedule 14.10.2013