SORU
22 Temmuz 2012, Pazar


'' Gerçekten CasperJS Yani ne Yapar O zaman

CasperJS bir web sitesi yoluyla tamamlanmış formlar, veri ayrıştırma, vb tıklama bir dizi otomatikleştirme için kullanıyorum.

Casper gibi görünüyor organize bir liste önceden belirlenmiş adımlar şeklinde then ifadeler (bkz: kendi örnek: http://casperjs.org/quickstart.html) ama belirsiz ne tetikler sonraki deyimi gerçekten yürütmek.

Örneğin, then tamamlamak için bekleyen tüm istekleri alır mı? injectJS bekleyen bir istek sayılır mı? Eğer then ifadesi iç içe - open deyimi sonuna kadar zincirleme varsa ne olur?

casper.thenOpen('http://example.com/list', function(){
    casper.page.injectJs('/libs/jquery.js');
    casper.evaluate(function(){
        var id = jQuery("span:contains('" itemName "')").closest("tr").find("input:first").val();
        casper.open("http://example.com/show/" id); //what if 'then' was added here?
    });
});

casper.then(function(){
    //parse the 'show' page
});

Akış CasperJS nasıl çalıştığını teknik bir açıklama arıyorum. Özel benim sorunum then son ifademi (yukarıda) casper.open ifademi önce çalışır ve neden bilmiyorum.

CEVAP
14 AĞUSTOS 2012, Salı


then() temelde bir yığın yeni navigasyon bir adım ekler. Bir adım, iki farklı şeyler yapabilirsiniz hangi javascript bir işlevi vardır:

  1. önceki adım varsa idam edilmesini bekliyor
  2. bir bekliyor istenen url ve sayfa yük ile ilgili

Hadi basit bir navigasyon senaryo:

var casper = require('casper').create();

casper.start();

casper.then(function step1() {
    this.echo('this is step one');
});

casper.then(function step2() {
    this.echo('this is step two');
});

casper.thenOpen('http://google.com/', function step3() {
    this.echo('this is step 3 (google.com is loaded)');
});

Bu yığın içinde: bütün yaratılmış adımları yazdırabilirsiniz

require('utils').dump(casper.steps.map(function(step) {
    return step.toString();
}));

O verir:

$ casperjs test-steps.js
[
    "function step1() { this.echo('this is step one'); }",
    "function step2() { this.echo('this is step two'); }",
    "function _step() { this.open(location, settings); }",
    "function step3() { this.echo('this is step 3 (google.com is loaded)'); }"
]

Haber _step() işlevi eklenmiştir CasperJS tarafından otomatik olarak yüklemek için url için bize; url yüklendikten sonra, bir sonraki adım mevcut yığın — step3() — denir.

Tanımladığınız zaman navigasyon adımlar run() bunları bir sırayla teker yürütür:

casper.run();

Dipnot:geri arama/dinleyici şeyler Promise pattern bir uygulamasıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010