CasperJs:在循环中单击链接以打开模式弹出窗口

时间:2013-10-23 07:11:02

标签: javascript phantomjs casperjs

我有一个页面,用于加载带有“详细信息”链接的项目列表。 单击此链接将打开一个模式弹出窗口,其中包含我需要的数据。

我想遍历每个“详细信息”链接,单击它以打开模式弹出窗口,读取数据,关闭它并继续下一个。

我将如何做到这一点?我不知道如何在循环中触发远程单击以打开模态,然后使用'.waitForSelector'来读取模态中的信息。

到目前为止,我有:

casper.start(url);

// How do i loop these two steps ??
casper.then(function() {
    this.evaluate(function() {
        var detailsBtn = Zepto('.details').first();
        detailsBtn.trigger('click');
    });
});

casper.waitForSelector('#popup-window', function() {
    // read data from popup
});

这适用于一个链接:)

非常感谢任何帮助!

由于

1 个答案:

答案 0 :(得分:2)

好的,我在CasperJS上发现了一些帮助group

以下是尝试类似事情的人的解决方案:

casper.start(url);

var i = 1;
casper.then(function loadResults(){
    var linkCount = this.getElementsInfo('.link').length;
    console.log('Found ' + linkCount + ' links.');

    this.repeat(linkCount, function() {

        try {

            this.click('.link'); // opens modal popup

            this.waitUntilVisible('#modal', function() {

                // do work

            });

            this.click('#close'); // close modal popup

        } catch(err) {
            console.log(err);
        } finally {
            i++;
        }

    });

});


casper.run();