我正在尝试使用Browserstack的Selenium及其Node.js驱动程序设置一些自动化测试。我想在通过HTTPS访问URL时检查页面是否显示任何不安全的内容警告。
有没有办法在Selenium中检测到它?如果一个浏览器比另一个浏览器更容易,那就没问题了。
答案 0 :(得分:2)
以下是使用Selenium和其他工具检测此问题的几种不同方法:
遍历所有链接并确保它们都以https://
开头(尽管通过Selenium,它不会检测复杂的加载内容,XHR,JSONP和帧间RPC请求)
自动运行Why No Padlock?上的工具,这可能不会超过上述方法
利用Sikuli截取显示绿色挂锁(如果是Chrome)的浏览器地址栏区域的屏幕截图,如果不存在则失败(请注意在并行测试{{ 3}}
浏览器中还有mentioned here内容安全策略,可以防止加载任何非安全对象,并在遇到时对外部URL执行回调。
这些提议的解决方案旨在检测加载到页面的任何非安全对象。这应该是断言内容安全的最佳做法。但是,如果您确实需要检测是否正在显示特定浏览器的不安全内容警告消息(也就是测试浏览器与您的网站的软件),那么使用Sikuli来匹配可见的存在警告消息或非您网页内容的存在可以完成这项工作。
答案 1 :(得分:2)
Firefox每次运行混合内容时都会创建一个日志条目,因此您可以在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'}