2013-04-26 13 views
8

Symfony2(2.1)で行われたアプリケーションの機能テストをいくつか行っていますが、問題が残っています。Symfony2機能テスト - jQueryインタラクションを持つ要素をクリックしてください。

ユーザーがリンクやその他の要素をクリックしたときにロードされるウェブサイトの一部がありますが、これらの操作はjQueryと$ .post呼び出しを使用して実行されます。 Symfony2クローラにこれらの呼び出しを行うにはどうしたらいいですか?

私はこのような何かするとき:「)(クリックして」

$link = $crawler->filter('ul.line_menu a')->eq(1)->link(); 
$crawler = $client->click($link); 

クローラは「」要素の「HREF」を取得し、それを起動しますが、「HREF」は空で、関数がこの要素に関連付けられているため、「preventDefault()」でクリック操作が行われません。

ありがとうございました! :)

答えて

7

symfonyの機能テストでは、Symfonyカーネルを直接呼び出してコードを実行します。それらはWebブラウザを経由せず、したがってJavaScript(これは単に実行されない)をサポートしていません。

javascriptなしでアプリケーションを実行することができない場合は、機能テストに別のツールを使用する必要があります。オプションの1つは、のようなjavascriptをサポートするドライバの1つとMinkを使用することです。

1

symfonyは、javascript、Ajax、Jqueryをサポートしていません。 phpの機能をテストするためにphpunitによって使用されます。このために作られたものではありません。

casperjsを使用できます。 CasperJSを使用すると、symfonyのクローラのような機能テストを行うことができ、すべてのjavascriptとcssコードを取得できます。

4

このタスクでは、「ヘッドレス」ブラウザをPhantomJSとして使用できます。

PhantomJSは、JavaScript APIを備えたヘッドレスWebKitです。 DOM処理、CSSセレクタ、JSON、Canvas、SVGなど、さまざまなWeb標準を素早くネイティブにサポートしています。

あなたの仕事を容易にするために、あなたはCasperJS

CasperJSを使用することができますワークフローをこすると自動化の作成を容易にするために大幅に改善されたAPIを提供しますPhatomJSための仲間です。あなたはそれを達成するためにはJavascriptを使用したい場合は、クロールしようとしているWebコンテキストは、jQueryとAJAX、CasperJSて動的なコンテンツを含んであなたのケースでは、

は優れたオプションです。イベントをトリガーしたり、プロセスステップを追加したり、次のステップを処理する前に各Ajaxコールの後に待機して検証する関数を含めることができます。ここで

方法CasperJSとjQueryを使ってウェブサイトをクロール例: CasperJs and Jquery with chained Selects

ここではどのようにCasperJS、ちょうどJavaScriptを使用してウェブサイトをクロール例: CasperJS dynamic selectlists

関連する問題