使用Selenium,BrowserStack和Node.js检测损坏的SSL或不安全的内容警告

我正在尝试使用Browserstack的Selenium及其Node.js驱动程序来设置一些自动化testing。 我想检查当通过HTTPS访问URL时页面是否显示任何不安全的内容警告。

有没有办法在Selenium中检测? 如果一个浏览器比另一个更容易。

以下是使用Selenium和其他工具检测这个问题的几种不同的方法:

  • 遍历所有链接并确保它们都以https://开头(尽pipe通过Selenium,这不会检测到复杂的加载内容,XHR,JSONP和帧间RPC请求)

  • 自动运行工具为什么没有挂锁? ,这可能不会超过上述方法

  • 利用Sikuli截取显示绿色挂锁的浏览器地址栏的区域(在Chrome的情况下),如果不存在则失败(在此处提到的并行testing中使用此注意事项

这里还提到了浏览器中的内容安全策略,它将防止加载任何非安全对象,并在遇到时执行对外部URL的callback。

更新:

这些build议的解决scheme旨在检测正在加载到页面的任何非安全对象。 这应该是断言内容安全的最佳做法。 但是,如果您确实需要检测是否显示了特定浏览器的不安全内容警告消息(也就是testing浏览器与您的网站的软件),则利用Sikuli来匹配可见的存在警告消息或不存在您的页面内容可以做的工作。

Firefox每次运行混合内容时都会创build一个日志条目,因此您可以在selenium中检查日志。 例:

 driver = webdriver.Firefox() driver.get("https://googlesamples.github.io/web-fundamentals/fundamentals/security/prevent-mixed-content/simple-example.html") browser_logs = driver.get_log("browser") 

并在browser_logs中寻找

 {u'timestamp': 1483366797638, u'message': u'Blocked loading mixed active content "http://googlesamples.github.io/web-fundamentals/samples/discovery-and-distribution/avoid-mixed-content/simple-example.js"', u'type': u'', u'level': u'INFO'} {u'timestamp': 1483366797644, u'message': u'Blocked loading mixed active content "http://googlesamples.github.io/web-fundamentals/samples/discovery-and-distribution/avoid-mixed-content/simple-example.js"', u'type': u'', u'level': u'INFO'}