开源GUI测试框架的测试报告实现思路
需要自己去实现截图以及高亮显示操作元素的功能。实现的思路通常是:
利用 Selenium WebDriver 的 screenshot 函数在一些特定的时机(比如,页面发生跳转时,在页面上操作某个控件时,或者是测试失败时,等等)完成界面截图功能。
具体到代码实现,通常有两种方式:
第一,扩展 Selenium 原本的操作函数实现截图以及高亮显示操作元素的功能
既然 Selenium 原生的 click 操作函数并不具备截图以及高亮显示操作元素的功能,那我们就来实现一个自己 click 函数。
当自己实现的 click 函数被调用时:
- 首先,用 Javascript 代码高亮显示被操作的元素,高亮的实现方式就是利用 JavaScript 在对象的边框上渲染一个 5-8 个像素的边缘;
- 然后,调用 screenshot 函数完成点击前的截图;
- 最后,调用 Selenium 原生的 click 函数完成真正的点击操作。
那么,以后凡是需要调用 click 函数时,都直接调用这个自己封装的 click 函数,直接得到高亮了被操作对象的界面截图。
第二,在相关的 Hook 操作中调用 screenshot 函数实现截图以及高亮显示操作元素的功能
Hook 函数:Java 的 main 函数,系统在执行 main 函数之前会先在后台隐式执行 premain 函数;JUnit 和 TestNG,都有所谓的 BeforeTest 和 AfterTest 方法,这些都是可以在特定步骤的前后插入自定义操作的接口。
可以在这些 Hook 函数中添加截图、元素高亮,以及额外的任意操作,比如更多的详细日志输出等等。
理想的 GUI 测试报告应该是由一系列按时间顺序的屏幕截图组成,并且可以在这些截图上高亮你所操作的元素,同时按照执行时序配有相关操作步骤的详细描述。