7

スクリプト自体から作成されたURLに移動しようとしています。

このサンプルコードは、(私が思っていた)期待どおりに機能しません。理由がわからない:(

var casper = require('casper').create({
    viewportSize:{
        width:1024, height:768
    },
    pageSettings:{
        userAgent:'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11'
    },
    verbose:true
});

casper.on('open', function (location) {
    console.log(location + ' loaded');
});

casper.start('http://www.google.com', function() {
    this.test.assertTitle('Google', 'Google homepage title is the one expected');
});

casper.mytest = '';

casper.then(function () {
    casper.mytest = 'http://www.yahoo.com';
});

casper.thenOpen(casper.mytest, function() {
    this.test.assertTitle('Yahoo', 'Yahoo homepage title is the one expected');
});

casper.run(function () {
        casper.exit();
    }
);

その結果、2番目のページはロードされません。

http://www.google.com loaded
PASS Google homepage title is the one expected
 loaded    
FAIL Yahoo homepage title is the one expected
#    type: assertTitle
#    subject: ""
#    expected: "Yahoo"
4

1 に答える 1

10

あなたの問題の理由は、現時点では、thenOpenYahooのステップを登録するときに変数casper.mytestが空であるためだと思います。この値は、現時点でCasperJSのステップのマップに入り、前のステップでソース変数を変更してもかまいません。

動的に構築されたURLをフェッチする例として、CasperJSとPhantomJSを使用したWebスクレイピングのブログ投稿が役立つ場合があります。

于 2012-09-23T19:15:43.307 に答える