私は、すべてのリンクを開いて各ページの小さなテストを実行することで、ナビゲーションバーとループからのすべてのリンクをつかむ私のウェブサイトのテストを行うことでCasperJSを学んでいます(タイトル、検索ボタンを押す、結果が戻ってくるかどうかなどを確認してください)。私はまた、次のリンクに移動する前にページタイトルをチェックするだけの "クイックテスト"フラグを含んでいました。合計約25のリンクがあります。Casperjsがリンクのループをスローダウン
問題は、約10回の完全なテストの後に何らかの形でスクリプトが停止してしまいますが、クイックテストで問題なく動作します。これは私が各ページを開くために使用していたループです:testPage()
、ページの特定の機能がすべてのようになり
casper.each(linkList, function(self, link){
self.thenOpen(link, function(){
self.echo(link);
temp = Date.now();
this.open(urlPrefix + link);
this.then(function(){
temp = (Date.now()) - temp;
self.echo("Load time: "+temp.toString()+"ms");
switch(link){
//case statements for specific pages
// - run specialized versions of testPage()
case "Example":
testExample(this);
break;
default:
testPage(this);
break;
}
});
});
});
:
function testPage(ths){
checkTitle(ths, "Page Title");
if(quickTest)
return;
ths.click('#searchButton');
casper.waitForSelectorTextChange("#results",function(){
temp = ths.evaluate(function(){
return $("tr.row").length;
});
if(temp>0)
casper.echo("Results returned");
else
casper.echo("No results returned");
});
}
checkTitle()
機能はただ単純です:
function checkTitle(ths, name){
temp = ths.getTitle();
casper.echo("Page Title: "+temp+" - App loads: "+(temp==name ? "PASSED" : "FAILURE"));
}
quickTest
がtrue
の場合、ループは終了し、問題はありません。 quickTest
がfalse
の場合、ループは12ページ目に無期限にハングします。偶然、11番目のページは文字通り同じページで、検索フィルタのオプションが増えました。さらに、私のcasperjsスクリプトは、quickTest=false
でロードするページ13410msと、quickTest=true
で460msしかロードできないことを伝えています。これは、2つのタイムスタンプの間のコードがスキップされている/そのフラグから追加され、それほど長い。
リンク経由でキャスパーの速度が低下するのはなぜですか?
')を3つの異なる方法で使用し、' testPage'に 'ths'の代わりに' casper'を使用すると、このコードは正常に見えます。おそらくこれはPhantomJSの制限です。 @ArtjomB。 –
ローカルインスタンス( 'ths')とは対照的に' casper'を使うことに違いがありますか? –
'casper'へのグローバルリファレンスを使用するのか、同じインスタンスへのクローズドリファレンスを使用するのかは関係ありませんが、開発者は奇妙なアイデアを持ち、今後その動作を変更する可能性があります。 –