Ich versuche, zu URLs zu navigieren, die aus dem Skript selbst erstellt werden.Casperjs kann URLs nicht dynamisch öffnen?
Dieser Beispielcode funktioniert nicht so wie ich es erwartet hatte. Kann nicht herausfinden, warum :(
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();
}
);
Das Ergebnis ist, dass die zweite Seite nicht geladen:
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"
Vielen Dank! In der Tat, wenn ich this.open() innerhalb von then() {} verwende, funktioniert es. Es ist jedoch sehr beunruhigend, da ich befürchte, dass es wahrscheinlich zu sehr hässlichen Code führen wird, wenn mein Projekt skaliert :( – johnjohn
@johnjohn, vor einiger Zeit habe ich einen Patch (keine kleine Sache) von CasperJS gemacht, der es funktionierte Schritt-für-Schritt (Ad-hoc) -Weg. Sie könnten wahrscheinlich das gleiche für Ihre Bedürfnisse tun. Das Problem mit meiner Version ist, dass es vor einiger Zeit war, und jetzt veraltet ist, und ich nicht planen, zu portieren das zum neuesten CasperJS. – Stan