PhantomJS (sonuçlarınız hazır önce komut sona) Yukarıdaki açıkladığınız
Ancak eşzamanlı bir şekilde kullanmış sizi durdurmak için hiçbir şey yokmuş gibi sorunlara yol varsayılan olarak uyumsuz olarak çalışır.
Bir süre döngüsünde yalnızca phantom.page.sendEvent('mousemove')
kullanın. Bu, webkit motoru sayfanızı yükleyene veya gerekli herhangi bir tarayıcı olayını işleyene kadar etkinlik pompasında dolaşmaya devam edecektir. Aramaları özeniyor triflejs.org projenin (hayali Internet Explorer sürüm) üzerinde çalışırken
do { phantom.page.sendEvent('mousemove'); }
while (page.evaluate(function() {return $("#panel").is(":visible");}));
Ben bu yaklaşımı keşfetti: page.loading
da örneğin başka boole durum olabileceğini
var page = require('webpage').create();
// Step 1: View item
page.open('http://localhost/item3324.php');
do { phantom.page.sendEvent('mousemove'); } while (page.loading);
page.render('step1-viewitem.png');
// Step 2: Add to cart
page.evaluate(function() {$('#add-to-cart').click(); });
do { phantom.page.sendEvent('mousemove'); } while (page.loading);
page.render('step2-viewcart.png');
// Step 3: Confirm contents
page.evaluate(function() {$('#confirm-cart').click(); });
do { phantom.page.sendEvent('mousemove'); } while (page.loading);
page.render('step3-confirm.png');
Not PhantomJS ortamında trifle.wait(ms)
'a.
aptal çözüm setTimeout() – igor