4

ヘッドレス ブラウザーを使用して、Web ページ ドキュメントの読み込みが開始された後に読み込まれたすべてのリソース (スクリプト、画像、スタイルシートなど) に簡単にアクセスして一覧表示できる方法を探しています。ファイルの URL、ステータス コード、タイプなどに興味があります。

Networkタブ (開発者ツール) が提供する情報にプログラムでアクセスする方法を考えてみてください。

ここに画像の説明を入力

これを支援するRubyライブラリを知っている人はいますか?または、さらに良いことに、 Capybara(–webkit) を使用してこれを達成する方法がある場合は?


アップデート

ポルターガイストには、私が求めていることを行うメソッドがあるようです。network_trafficしかし、まだそれを研究する時間がありませんでした。やったらまた報告します。

4

3 に答える 3

3
于 2012-10-23T11:14:04.587 に答える
0

カピバラのテスト中にこの情報が必要になるのは奇妙に思えます。実際のユーザーの行動を反映するようにUIテストを作成することをお勧めします。

AJAXを使用してページ上のテキストのブロックを更新するボタンについて考えてみます。ボタンをクリックしてから、リクエストが発生したことを確認し、戻り値を調べることができます。ただし、ユーザーと同じようにテストすることをお勧めします。ボタンをクリックし、テキストのブロックが変更されるまで待ってから、期待されるテキストが表示されることを確認します。

本当にネットワークトラフィックをキャプチャしたい場合は、テストで透過的なHTTPプロキシを設定し、それを介して接続し、事後にリクエストログを調べます。

私のチームは、同様のアプローチを使用して、カピバラのテスト中にインターネットからの切断をシミュレートします。私たちが使用するFirefoxプロファイルは、各機能の開始時に開始される透過プロキシを指すように構成されています。そうすれば、次のようなシナリオを作成できます。

Given I am online
 When I do something
  And I am offline
 Then something doesn't break

...ここで、am onlineおよびam offlineステップはプロキシのオンとオフを切り替えるだけです。

于 2012-10-16T01:19:30.803 に答える
0

@polarblau の応答に基づく構築

テスト コードにデバッグ ブレークポイントを設定して実行できます。

page.driver.network_traffic.each { |request| request.response_parts.uniq(&:url).each { |response| puts "#{response.url}: #{response.status}" }}

違いは、新しいブラウザーを起動する必要がなく、ページが読み込まれたものを確認できることです。

于 2015-07-08T02:30:41.747 に答える