#7 楼 @hbreset
先说你第二个直接抓屏的问题,这个误报率太高了,特别是像现在 lazyload 的应用那么广泛,图片的加载稍微还没有出来就去截屏 diff 了,这样的情况发生的概率很大。所以不去做图片的像素 diff。
使用 page diff,海豚有一个 “基线” 的概念,就是用同样的数据跑一次,如果觉得这一次跑出来的结果是符合当前预期的,那么就设置为基线,下次的运行都基于这份基线做 diff。如果最新跑出来的跟基线有 diff,但是又符合新功能的预期的,那么就又可以设置为新的基线,一直循环这样。
page diff 保存的不是 html 源码,保存的是当前这个页面状态下指定 DOM 下的所有子元素 DOM 以及它的样式,这就是要遍历整个 DOM,并获取到 DOM 元素的样式,然后生成一份 JSON 数据,最后保存的是这份 JSON 数据文件。
#4 楼 @chaos1001 看样子不是图片的跨域,是其他的问题。 之前没遇到过
#2 楼 @chaos1001 看看 https://github.com/fouber/page-diff 这个开源的工具哈
UI 自动化的 case 维护成本是比较高,那么应该思考下如何降低 case 的维护成本了。可以看看 https://testerhome.com/topics/3394 海豚的思路,基于录制,自动生成测试脚本,对于小白用户可以基于录制去完成,对于高级用户可以更深层次的写测试 case。
现在我们遇到最大的问题,是由于数据上的不稳定性(随机)导致 UI 的变动,使得录制的 pagediff diff 差异比较多。现在过渡的办法是做测试桩,将接口返回的数据固定化,达到 UI 界面的稳定。