Вы можете добавить request.abort();
в шаге Casper, чтобы закончить шаг и перейти к следующему шагу:
casper.then(function() {
request.abort();
this.echo('You will never see me');
});
casper.then(function() {
this.echo('I execute next');
});
Вы также можете проверить, если вы хотите прервать на основе open
запроса. Эта функция будет проверять URL на матч, а затем прервать до открытия и возвращает код статуса HTTP:
casper.on('page.resource.requested', function(requestData, request) {
if (requestData.url.indexOf('slowpage.php') !== -1) {
request.abort();
}
});
Вы можете изменить waitTimeout
и stepTimeout
настройки. Кроме того, под pageSettings
вы можете заставить casper загружать изображения. Пример:
var casper = require('casper').create ({
waitTimeout: 10000,
stepTimeout: 10000,
verbose: true,
viewportSize: {
width: 1400,
height: 768
},
pageSettings: {
"userAgent": 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.10 (KHTML, like Gecko) Chrome/23.0.1262.0 Safari/537.10',
"loadImages": false,
"loadPlugins": false,
"webSecurityEnabled": false,
"ignoreSslErrors": true
},
onWaitTimeout: function() {
//throw new Error
},
onStepTimeout: function() {
//throw new Error
}
});
Вы можете использовать Casper waitFor ждать, пока страница полностью загрузится. Только return true
. Он даже имеет свою собственную функцию timeout
. Таким образом, вы могли бы сделать что-то вроде этого:
casper.waitFor(function check() {
casper.thenOpen("http://127.0.0.1/slowpage.php", function() {
//+++ casper will wait until this returns true to move forward.
//+++ The default timeout is set to 5000ms
this.evaluate(function() {
//checks for element exist
if (document.getElementById('someElement')) {
console.log('Im loaded!');
return true;
}
});
});
}, function then() { // step to execute when function check() is ok
//+++ executes ONLY after the 'casper.thenOpen' returns true.
this.echo("THEN!", "GREEN_BAR");
}, function timeout() { // step to execute if check has failed
//+++ code for on timeout. This is different than onStepTimeOut.
},1000);// custom timeOut setting.
Не можете ли вы сконфигурировать casperjs так, чтобы он не загружал изображения? http://docs.casperjs.org/ru/latest/modules/casper.html#pagesettings – rusln