2

我正在使用 watir-webdriver 进行测试自动化,并且需要一种方法来确定我的测试页面是否触发了浏览器中的不安全内容警告,或者它是否正在以 http 而不是 https 加载任何资源。

有没有办法在 watir-webdriver 中做到这一点?或者我可以使用其他工具来执行此操作吗?

例如,如果您访问https://github.com并查看网络流量,您会看到一堆通过 https 加载的 .js 文件和图像。我需要一个能够确定是否使用 http 而不是 https 加载这些资源的脚本。当这种情况发生在安全站点上时,主要浏览器会发出某种警告,但它们并不总是会创建弹出窗口。

在此处输入图像描述

4

2 回答 2

0

我一直在开发的内容适用于 99% 的案例。您可以使用PhantomJS并使用backtics从您的 Ruby 代码中执行它,或者使用此 GEM,捕获输出,然后对其进行过滤。他们甚至有一个名为 netlog.js 的示例,可以开箱即用。

输出是 HAR 或 HTTP 存档,这是您在屏幕抓取中看到的内容,但已被美化。

如果 Flash 文件调用了 http 元素,则 1% 的情况下它不起作用。我在广告中看到过这个。如果您的网站上没有 Flash 广告,那应该不是问题。我的做,现在我正在研究那 1% ;)

于 2012-11-21T19:18:11.087 回答
0

我认为您最好的选择是使用pcapruby ​​-pcap ,tutorial)捕获 watir-webdriver 发送的请求。您的代码将是这样的:

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 的示例拼凑而成的。)

缺点是你需要确保你的机器上没有其他东西在你的测试运行时发出请求,所以在隔离的服务器或虚拟机中运行它是一个不错的选择。

于 2012-07-07T20:25:37.630 回答