3

Web サイトを破棄するときに、作成している URL からファイルをダウンロードする際に問題が発生しています。現在、ファイルの月と年を発見し、URL の値を置き換えて、その場所からダウンロードしようとしています。評価範囲内からダウンロード機能をご利用いただけないことは承知しております。

this.evaluate(function collectAllData (MONTHS) {
    for (...) {
        // Create url from page information ...
        casper.emit('test.download', url, fileName); 
    }
}, MONTHS);

casper.on('remote.download', function processRemoteDownload(url, fileName) {
    this.download(url, fileName);
});

評価内からカスタムイベントを発行する方法はありますか? 現在のページから移動したり、評価スコープを行ったり来たりする必要はありません。URL のリストを返して事後にそれらを処理できることはわかっていますが、これが可能かどうかは興味がありました。助けてくれてありがとう。

4

2 に答える 2

0

これが私がしたことですDOMContentLoaded

casper.then(function getDOMLoaded(){
    this.evaluate(function(){
        window.__DOMLoaded = false;
        document.addEventListener("DOMContentLoaded", function(){
            window.__DOMLoaded = true;
        })
    })
});
casper.waitFor(function check() {
    return this.getGlobal('__DOMLoaded');
}, function then() {    // step to execute when check() is ok
    casper.echo("DOMContentReady in " + (Date.now()-start) + " ms", "INFO_BAR");
}, function timeout() { // step to execute if check has failed
    casper.echo("DOMContentReady took longer than 10 seconds!")
}, 10000);

を介して WebPage で更新されるグローバル変数を設定しますevaluate。次に、が truewaitForかどうかを (10 秒間) 確認しようとする a を実行しwindow.__DOMLoadedます (ただし、casper 内では評価はされません。これは次の方法でアクセスされます)。this.getGlobal()

于 2014-05-30T10:11:14.017 に答える