2016-10-25 1 views
2

段階に「その後」を追加しません。つまり、CasperJSのステップの配列に追加されていないということです。CasperJS waitForSelectorこれは以下のように私のコードがどのように見えるかである配列

これは、ログの一部です:

[18] => [info] [phantom] Step _step 5/5 https://... (HTTP 200) 
[19] => [info] [phantom] Step _step 5/5: done in 3392ms. 
[20] => [info] [phantom] waitFor() finished in 40ms. 
[21] => [info] [phantom] Done 5 steps in 3451ms 

タイムアウトはスクリプトが魔法のように動作来る前にセレクターがページに見つからない場合。

UPD。それが判明したので、問題はdo_whilewaitForにありました。

+0

コードをすべて投稿してください。 – Sayakiss

答えて

0

私は、この問題がdo_whileの変更step.thenの機能であることを知りました。 do_whilewaitFor関数と互換性がありませんでした。

解決策(pull request)は、最も明瞭ではありませんが、簡単です。 私は特別な方法で機能を命名し、小さなチェックを追加しました:ちょうど成功の関数名は、例のようにsuccessThenが含まれていることを確認あなたのwaitFor作品を作るために

var isWaitSuccessFun = step.name.indexOf('successThen') != -1; 
if(isWaitSuccessFun || !this.steps[this.current].executed) { 

を:

casper.waitFor(
    function check(){ 
     // check if page is ready 
    }, 
    function successThen(){ 
     // execute after page is ready 
    }, 
    function(){ 
     // time out happened before page got ready 
    }, 
    timeOutTime 
); 

このまたwaitForSelectorは、waitForに基づいて同様の他の機能と同様に機能します。

完全なコードはforked repositoryで利用できます。

関連する問題