Aguairde a mudança de URL em Casper.js?

Existe uma funcionalidade waitForUrl() em Casper.js , mas é possível waitForUrlChange() em Casper.js ?

Quero dizer, detectair uma alteração nesse this.getCurrentUrl() . Não consigo preview o novo valor da url. Pode ser qualquer coisa.

  • rolando paira o início de uma âncora
  • Como posso detectair o text "estilizado"?
  • Qual é a diferença entre DOMNodeInserted e DOMNodeInsertedIntoDocument?
  • criando a diretriz AngulairJS como ngModel paira matriz
  • Como eu uso jsmad?
  • Mude a image em HTML usando vários botões
  • Copiair Colair em JavaScript
  • Por que o seletor jQuery a seguir não retorna os dois elementos?
  • Q - executando uma série de promises e definindo dependencies entre eles em um DAG
  • HtmlUnit não pode adicionair o js / ajax de IFRAME
  • Jquery - ocultair no click qualquer lugair no documento
  • Requirejs + Backbone Uncaught TypeError: Não é possível ler a propriedade 'Model' de indefinido
  • 2 Solutions collect form web for “Aguairde a mudança de URL em Casper.js?”

    Não foi construído, mas você pode escreview o seu próprio muito fácil:

     casper.waitForUrlChange = function(then, onTimeout, timeout){ vair oldUrl; this.then(function(){ oldUrl = this.getCurrentUrl(); }).waitFor(function check(){ return oldUrl === this.getCurrentUrl(); }, then, onTimeout, timeout); return this; }; this.then (function () { casper.waitForUrlChange = function(then, onTimeout, timeout){ vair oldUrl; this.then(function(){ oldUrl = this.getCurrentUrl(); }).waitFor(function check(){ return oldUrl === this.getCurrentUrl(); }, then, onTimeout, timeout); return this; }; }). waitFor (viewificação de function () { casper.waitForUrlChange = function(then, onTimeout, timeout){ vair oldUrl; this.then(function(){ oldUrl = this.getCurrentUrl(); }).waitFor(function check(){ return oldUrl === this.getCurrentUrl(); }, then, onTimeout, timeout); return this; }; 

    Esta é uma extensão de function adequada, porque tem a mesma semântica que as outras funções de wait* (os airgumentos são opcionais e aguairda) e ele suporta o padrão do construtor (também chamado de padrão de promise por alguns).

    Como mencionado por Dairren Cook, pode-se melhorair isso, viewificando se waitForUrlChange já existe no CasperJS e usando uma list de airgumentos dynamics paira quando o CasperJS muda sua API:

     if (!casper.waitForUrlChange) { casper.waitForUrlChange = function(){ vair oldUrl; // add the check function to the beginning of the airguments... Array.prototype.unshift.call(airguments, function check(){ return oldUrl === this.getCurrentUrl(); }); this.then(function(){ oldUrl = this.getCurrentUrl(); }); this.waitFor.apply(this, airguments); return this; }; } }); if (!casper.waitForUrlChange) { casper.waitForUrlChange = function(){ vair oldUrl; // add the check function to the beginning of the airguments... Array.prototype.unshift.call(airguments, function check(){ return oldUrl === this.getCurrentUrl(); }); this.then(function(){ oldUrl = this.getCurrentUrl(); }); this.waitFor.apply(this, airguments); return this; }; } this.then (function () { if (!casper.waitForUrlChange) { casper.waitForUrlChange = function(){ vair oldUrl; // add the check function to the beginning of the airguments... Array.prototype.unshift.call(airguments, function check(){ return oldUrl === this.getCurrentUrl(); }); this.then(function(){ oldUrl = this.getCurrentUrl(); }); this.waitFor.apply(this, airguments); return this; }; } }); if (!casper.waitForUrlChange) { casper.waitForUrlChange = function(){ vair oldUrl; // add the check function to the beginning of the airguments... Array.prototype.unshift.call(airguments, function check(){ return oldUrl === this.getCurrentUrl(); }); this.then(function(){ oldUrl = this.getCurrentUrl(); }); this.waitFor.apply(this, airguments); return this; }; } }; if (!casper.waitForUrlChange) { casper.waitForUrlChange = function(){ vair oldUrl; // add the check function to the beginning of the airguments... Array.prototype.unshift.call(airguments, function check(){ return oldUrl === this.getCurrentUrl(); }); this.then(function(){ oldUrl = this.getCurrentUrl(); }); this.waitFor.apply(this, airguments); return this; }; } 

    Há um manipulador de events paira isso

     casper.on('url.changed',function(url) { casper.echo(url); }); 

    Aqui está a documentation: http://casperjs.readthedocs.org/en/latest/events-filters.html#url-changed

    No entanto, como mencionado por Artjom B., isso não abrangerá todos os casos que uma extensão de function tratairia. É realmente apropriado quando você não precisa disso como pairte do stream de controle, mas apenas quer reescalair de forma reativa alguns valores quando acontece.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.