2012-08-29 10 views
5

これは私の最初のキャスパーテストなので、まだ基本的には苦労しています。ログインフォームのユーザー名とパスワードを入力して送信します。次に、次のページ(ユーザーがログインしていることを確認する)に「ログオフ」リンクが表示されているかどうかを確認します。CasperJSフォームが次のページにリダイレクトしない理由は何ですか?

しかし、私が知る限り、、次にが呼び出されると、URLは同じです。投稿がないか、次のページにリダイレクトされているように見えます。私は間違って何をしていますか?

casper.start "http://test.local.mycompany.local/", -> 
    @echo 'at ' + @getCurrentUrl() 
    @fill 'form', { UserAlias : 'joe', Password : 'password' }, true 

casper.then -> 
    @echo 'at ' + @getCurrentUrl() 
    @test.assertExists '#log-off-link', 'log-off link exists' 

casper.run -> 
    @test.done() 

ので@getCurrentUrl両方のエコーが間違っている、同じURLを返します。

+0

あなたがテストしている実際のサイトを見ることなく非常に助けてくれる – NiKo

+0

第2の 'casper.then'は実行前にURLが変更されるのを待たず、この場合は前に' casper.waitForUrl() 'を使いますそれ以上のアサーションを行う。 – rusln

答えて

6

chrome extension ressurectioを使用して、ブラウザでcasperjsの自動テストを生成できます。それは非常に使いやすくて便利です。いくつかの行(コードの一部)で修正する必要がありますが、とにかく便利で便利です。

2

私は同じ問題を抱えていました。ある日、私のキャスパーテストは機能しなくなりました。より正確には、casperjsはリダイレクトを停止しました。問題は実際に私のサーバーが無効なHTTPセットクッキーヘッダー(無効な日付)を返すことでした。これは、有効期限の設定に問題があったためです。とにかく、いくつかのヘッダー値に間違った値があると、casperjsはリダイレクトの "location" HTTPヘッダーのような他のヘッダー値を無視するようになります。

クッキーの有効期限の問題を修正したら、HTTPセットクッキーヘッダーは正常で、casperjsはリダイレクトを再び開始しました。

希望すると便利です。

1

casperが名前でフィールドを見つけられない可能性があります。試してみることができます

casper.start "http://test.local.mycompany.local/", -> 
    @echo 'at ' + @getCurrentUrl() 
    @fillSelectors 'form', { 'input[name=UserAlias]' : 'joe', 'input[name=Password]' : 'password' }, true 

これはあなたのコードと同じ意味ですが、時にはそうではありません。