2016-07-01 47 views
1

試圖通過casperJS啓動方法打開隨機頁面,但一些頁面正確加載,其中一些頁面沒有正確加載,因此在這種情況下,它不是從casperjs退出。 它正陷入控制檯,然後需要使用CTR + C手動從控制檯退出。CasperJS:退出不工作

casper.start("some url", function() { 

    if(this.status().currentHTTPStatus == 200) { 
     casper.echo("page is loading"); 
    } else { 
     casper.echo("page is in error "); 
     this.exit(); 
    } 

}); 
+1

你調用'casper.run()在你的代碼'? – Sayakiss

+0

感謝您的回覆,我正在使用this.exit,如下所示。 casper.run(function(){this.exit();});如果某些頁面沒有響應或者需要較長的時間才能加載,那麼它會卡住,我希望這會被強制退出。 – DJJ

+0

如果頁面未在給定時間範圍內加載,是否有設置超時的方法? – DJJ

回答

2

用一個全局stepTimeout選項將其包裝一下。

示例代碼:

var casper = require('casper').create({ 
    stepTimeout: 10000 //10s 
}) 

casper.start() 

casper.then(funtion(){ 
    casper.open(url) 
}) 

casper.run() 
+0

謝謝,這個解決方案正在爲我工​​作:) – DJJ

+0

@DJJ歡迎。如果沒有進一步的問題,你可以設置我的答案爲接受... – Sayakiss

+0

完成!謝謝。 – DJJ

0

嘗試bypass()忽略下一個然後秒。

casper.start("some url", function() { 
    if(this.status().currentHTTPStatus == 200) { 
     casper.echo("page is loading"); 
    } else { 
     casper.echo("page is in error "); 
     this.bypass(2); // Will not execute the then functions. 
    } 
}).then(function() { 
    // The 1st then function. 
}).then(function() { 
    // The 2nd then function. 
}) 

casper.run(function() { 
    this.echo('Something'); 
    this.exit(); // <--- Here. 
}); 
+0

感謝您的回覆,但我使用this.exit如下。 casper.run(function(){ \t this.exit(); });如果某個頁面沒有響應,則不會強制退出。 – DJJ

+0

我編輯了答案,並讓我知道如果你仍然需要另一種解決方案。 – Anson

+0

如果頁面未在給定時間範圍內加載,是否有設置超時的方法? – DJJ