Próbuję przejść do adresów URL, które są tworzone ze skryptu.Casperjs nie może dynamicznie otwierać adresów URL?
Ten przykładowy kod nie działa tak, jak oczekiwałam (miałem). Nie mogę zrozumieć, dlaczego :(
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();
}
);
Powoduje to, że druga strona nie ładuje:
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"
Dziękujemy! Rzeczywiście, jeśli użyję this.open() wewnątrz then() {}, to działa. Jest to bardzo niepokojące, ponieważ obawiam się, że prawdopodobnie doprowadzi to do bardzo brzydkiego kodu, ponieważ mój projekt się skaluje :( – johnjohn
@johnjohn, jakiś czas temu zrobiłem łatkę (nie jest to mała rzecz) CasperJS, która sprawiła, że działa Problem może być taki sam jak w przypadku Twoich potrzeb. Problem z moją wersją jest taki, że był jakiś czas temu, a teraz jest już nieaktualny i nie planuję portu to do najnowszego CasperJS. – Stan