Casperjs cliquez sur la méthode
Je suis assez nouveau à casperjs et javascript en général, mais j'ai assez vaste expérience du développement dans d'autres domaines. Actuellement, le code que j'essaie de faire en cours d'exécution est de simplement aller à un site web et en cliquant sur un lien, qui devrait être simple, mais je vais avoir des ennuis.
var casper = require('casper').create();
var x = require('casper').selectXPath;
casper.start('http://www.guru.com/emp/search.aspx?keyword=#&&page=1&sort=Earnings');
casper.then(function() {
this.test.assertExists({
type: 'xpath',
path: '//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'
}, "Got Here");
});
casper.then(function() {
var firstUrl = this.getCurrentUrl()
});
casper.thenClick(x('//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'), function() {
console.log("Woop!");
});
casper.waitFor(function check() {
return this.evaluate(function() {
return this.getCurrentUrl() != firstUrl;
});
}, function then() {
console.log(this.getCurrentUrl());
});
casper.run();
actuellement, cette fois 5000ms sans emballage dans le waitFor il imprime simplement la même url, deux fois.
OriginalL'auteur Slater Victoroff | 2013-04-02
Vous devez vous connecter pour publier un commentaire.
Ce doit être ce que vous cherchez.
Notez que j'ai déménagé
firstUrl
être une variable globale; de cette façon, leCasper.waitFor()
a accès.Également, à l'aide de
this.evaluate()
à l'intérieur de laCasper.waitFor()
est inutile et fait inhibant recevoir le message d'erreur parce que nithis
nifirstUrl
existé sur la télécommande de la page. C'est parce que toutes les variables que vous souhaitez avoir accès à l'intérieur d'unCasper.evaluate()
doivent être passés comme arguments après la fonction.C'est le résultat que j'obtiens lors de l'exécution du code ci-dessus:
OriginalL'auteur hexid
Ressemble à un site dépendant de JavaScript pour sa navigation...
Vous devriez probablement essayer de waitFor l'url de changement avant le traitement de votre prochaine étape.
OriginalL'auteur NiKo