
链接到本文:
在上一篇文章中,我们分析了图像识别和传统UI自动化之间的区别. 在今天的文章中,我们将了解图像识别在网站监控中的应用.
在过去的监视中,我们在Web项目中有多种监视,其中最常见的是界面监视,并且这种监视具有最高的收益和最容易发现的问题. 但是对于大型网站系统,从服务器到前端显示有很多层: Intranet VIP,CDN等. 但是,对接口的监视不能准确反映前端页面的状态,即用户看到的诸如: 层,异常数据,空白页等. 这时,我们需要进行全面监控,例如css图像识别 应用,jss加载异常监控,DOM显示是否正常. 这些可以自动化以实现部分监控. 但是,从用户角度不能完全监视这些内容,因此今天我们将共享页面级监视.
要解决的几个问题:
1. 模拟用户打开要监视的网站(Phantomjs和webdriver)
2. 打开并截图要监控的网站
3. 如何找到这次访问和最后一个问题的区别
4. 如果评估相对差值以确定是否存在问题
关于技术选择:

l硒
Selenium是用于Web的自动测试工具. 它最初是为自动测试网站而开发的. 它最初是为自动测试网站而开发的. 它的类型类似于我们用来玩游戏的按钮精灵. 它可以根据指定的命令自动执行. 区别在于Selenium可以直接在浏览器上运行,并且支持所有主流浏览器(包括没有接口的PhantomJS浏览器).
Selenium可以按照我们的说明,让浏览器自动加载页面,获取所需页面图像识别 应用,甚至获取页面的屏幕截图,或者确定网站上是否发生了某些操作.
Selenium没有浏览器,并且不支持浏览器功能. 需要将其与第三方浏览器结合使用. 但是我们有时需要将其嵌入代码中运行,因此我们已经用名为PhantomJS的工具代替了真正的浏览器.
您可以从PyPI网站下载Selenium库,也可以使用第三方管理器pip命令安装它: pip install selenium
硒官方参考文件:
l PhantomJS
PhantomJS是基于Webkit的“无头”浏览器. 它将网站加载到内存中并执行页面上的JavaScript. 因为它不显示图形界面,所以它比完整的浏览器更有效地运行.
如果将Selenium和PhantomJS结合使用,我们可以运行一个非常强大的Web搜寻器,可以处理JavaScript,Cookie,标头以及实际用户需要做的任何事情.

注意: PhantomJS只能从其网站()下载. 由于PhantomJS是功能齐全(尽管没有接口)的浏览器,而不是Python库,因此不需要像其他Python库一样安装,但是我们可以通过Selenium直接使用PhantomJS直接使用
PhantomsJS官方测试文件:
考虑到监视的主要任务是监视而不是测试. 该系统不需要太多考虑兼容性,并且监视功能相对单一,主要用于功能回归测试和页面截图,因此我选择了Selenium + PhantomJS
l图片比较
关于图像比较,我简单实用的方面是OpenCV也相对成熟,文档丰富且易于上手,它也满足了当前的需求. 刚刚支持的语言也更加一致. 因此,我们将直接使用OpenCV,并且在此不介绍修改软件的安装. 这是我们常用方法的简要介绍(有些参考文档)
现在,用于Python的OpenCV已通过NumPy绑定. 因此,使用时必须掌握一些与NumPy相关的知识!
图像是矩阵. 在适用于Python的OpenCV中,图像是NumPy中的一个数组!
如果要读取图像,必须首先导入OpenCV软件包,方法是:
无需在Python中声明变量,因此在C ++中无需cv :: Mat xxxxx. 就是这样:

1.img = cv2.imread(“ D: \ cat.jpg”)
OpenCV当前支持读取常见格式,例如bmp,jpg,png和tiff. 有关更多详细信息,请参阅OpenCV参考文档.
下一步创建一个窗口
1.cv2.namedWindow(“图像”)
然后在窗口中显示图像
1.cv2.imshow(“图片”,img)
最后添加一个句子:
1.cv2.waitKey(0)
如果不添加最后一句话,IDLE中的执行窗口将不会直接响应. 在命令行上执行时,它是闪烁的. ,

有关图像比较的方法,请参考Internet上的一些代码:
一些业务逻辑代码如下:
l结果显示
根据大量数据计算. 如果前后两个请求之间的相识度超过70%,则该网站的结构基本上没有改变. %+)

发布303篇原创文章·赞扬278个·访问304万+
跟随他的留言板
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-178467-1.html
奥驴黔驴技穷
认同和学习几千年传承下来的中华文明