1

私は悪夢のjsを使用href linksして同じで別のdiv内にあるすべてのものを取得しようとしていclass nameます...ここに私のコードがあります....

var Nightmare = require('nightmare');
var vo = require('vo');

vo(function* () {
    var nightmare = Nightmare();
    var title = yield nightmare
    .goto('https://example.com')
    .type('input[name="q"]', 'search term')
    .click('input[value="some title"]')
    .evaluate(function () {
        //return $('.myclass').find('a').attr('href');
        $('.myclass').find('a').each(function() {
            return $(this).attr('href');
        });

    });
      console.log(title);
    yield nightmare.end();

})(function (err, result) {
    if (err) return console.log(err);
});

以下は私のdivの内容です...

<div class="myclass"><a href="example1.com">ex1</a>
</div>

<div class="myclass"><a href="example2.com">ex2</a>
</div>

<div class="myclass"><a href="example3.com">ex3</a>
</div>

私が使用すると1つのリンクを取得できますreturn $('.myclass').find('a').attr('href');が、各機能は機能しません( returns null..この問題を解決するための提案はありますか?

4

3 に答える 3

1

後で「a」タグを付けたセレクターとしてクラス名を使用するだけでよいと思います。

$(".myClass a").each(function() {
    return $(this).attr("href");
});

これが実際の例です

于 2015-11-14T07:01:17.637 に答える
1

わかりませんが、すべてを配列nightmare.jsに収集したい場合は、次のようにします。href

.evaluate(function () {
    var hrefs = [];
    $('.myclass').find('a').each(function() {
        hrefs.push($(this).attr('href'));
    });
    console.log(hrefs);
    //return hrefs
});
于 2015-11-14T07:16:56.427 に答える
0
.evaluate(function () {
    var arr = [];
    $('div.myClass > a').each(function(i) {
      arr.push($(this).prop('href'));
    });
    return arr;
});
于 2015-11-16T12:48:13.933 に答える