9

PhantomJS を使用して Webdriver を介したページ読み込みのすべての HTTP 要求と応答をログに記録するにはどうすればよいですか? 私は python を使用しており、私の非常に単純なテスト スクリプトは次のようになります。

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('http://www.golem.de')

私はすでに PhantomJS の機能を見つけました:

page.onResourceRequested = function (request) {
    console.log('Request ' + JSON.stringify(request, undefined, 4));
};

しかし、これを Selenium Webdriver それぞれ Ghostdriver と組み合わせる方法がわかりません。どうすればこれを行うことができますか?

4

3 に答える 3

2

すべてのネットワーク トラフィックをログに記録する 1 つの方法は、素晴らしいツール を使用して、straceすべてのネットワーク リクエスト (およびデータ) をファイルに記録することです。

strace -s9999 -e trace=network curl http://example.com > /dev/null

部分的な出力:

sendto(3, "GET / HTTP/1.1\r\nUser-Agent: curl/7.32.0\r\nHost: example.com\r\nAccept: */*\r\n\r\n", 75, MSG_NOSIGNAL, NULL, 0) = 75
recvfrom(3, "HTTP/1.1 200 OK\r\nAccept-Ranges: bytes\r\nCache-Control: max-age=604800\r\nContent-Type: text/html\r\nDate: Sun, 08 Ju...
于 2014-06-02T19:33:04.453 に答える
2

別の一般的な低レベルの方法ですが、それよりもわずかに高いレベルstraceですtcpdump。サーバー アプリの特定のリッスン ポート範囲と宛先ホストにフィルターをかけることができます。必要に応じて、後で分析するためにパケットをログに記録することもできます。-A( ASCII ) dump オプションを使用すると、特定のページへのリクエストをフィルタリングできます。ポート 80 での localhost へのリクエストの簡単な例:

tcpdump -i lo -A -nn dst port 80 and dst host `hostname`

Wireshark または同様のソフトウェアでも、この種のプロトコル固有のフィルタリングを実行できると確信しています。

于 2014-06-08T01:07:18.813 に答える