2

テストの自動化に watir-webdriver を使用していますが、テスト ページがブラウザーで安全でないコンテンツの警告をトリガーしているかどうか、または https ではなく http でリソースを読み込んでいるかどうかを判断する方法が必要です。

watir-webdriver でこれを行う方法はありますか? または、これを行うために使用できる別のツールはありますか?

たとえばhttps://github.comにアクセスしてネットワーク トラフィックを確認すると、https 経由で読み込まれた .js ファイルと画像が多数表示されます。これらのリソースのいずれかが https ではなく http を使用して読み込まれたかどうかを判断できるスクリプトが必要です。安全なサイトでこれが発生した場合、主要なブラウザでは何らかの警告が表示されますが、必ずしもポップアップが作成されるとは限りません。

ここに画像の説明を入力

4

2 に答える 2

0

私が開発してきたものは、99%のケースで機能します。PhantomJSを使用して、 backticsを使用してRubyコード内から実行するか、このGEMを使用して出力をキャプチャし、フィルタリングすることができます。箱から出して使用できるnetlog.jsというサンプルもあります。

出力はHAR、つまりHTTPアーカイブであり、これは画面グラブで見ているものですが、それはきれいになっています。

それが機能しない時間の1%は、Flashファイルがhttpである要素を呼び出す場合です。私はこれを広告で見ました。サイトにFlash広告がない場合は、問題にはなりません。私はそうします、そして今私はその1%に取り組んでいます;)

于 2012-11-21T19:18:11.087 に答える
0

最善の策は、watir-webdriver によって送信されたリクエストをpcap( ruby ​​-pcap 、tutorial ) でキャプチャすることだと思います。コードは次のようになります。

require 'pcaplet'

# start capturing packets
httpdump = Pcaplet.new('-s 1500')

#
# do web requests here
#

insecure_reqs = []
httpdump.add_filter(
  # you could also filter by just tcp and then check pkt.dst_port in the loop
  Pcap::Filter.new('tcp and dst port 80', httpdump.capture)
)

httpdump.each_packet do |pkt|
  insecure_reqs << pkt.dst.to_s
end

(免責事項: これはテストされておらず、 ruby​​-pcap のからまとめられています。)

欠点は、テストの実行中にマシン上で他に何も要求していないことを確認する必要があることです。そのため、これを分離されたサーバーまたは VM で実行することをお勧めします。

于 2012-07-07T20:25:37.630 に答える