前面已经介绍了Cypress框架,为什么还要介绍puppeteer呢?因为puppeteer支持的一些功能cypress不支持,例如多个tab页窗口切换的场景,同一个测试场景中访问不同域页面等。另外,puppeteer有google大厂支持,发展前景很好,目前也有一些测试框架底层是基于puppeteer的,例如视觉测试框架BackstopJS,故掌握puppeteer不仅能让自己在编写UI层测试时有更多的选择,也能拓展自己的测试知识面。下图从不同纬度列举了puppeteer框架特点,其中标注了红色小星的为该框架的突出优势。

Puppeteer 下单_javascript

可以看到puppeteer也支持自动等待,Page Object设计模式,在测试数据管理、配置信息管理方面也可以调用nodejs中的一些包完成。且如果被测应用中有一些比较偏的操作场景,那么在选择框架时可以先调研下puppeteer是否支持,理论上puppeteer能支持的web应用操作场景比cypress多。

上面介绍了Puppeteer的特性,接下来介绍puppeteer系列中对于Puppeteer框架每篇博客会讲解的内容。具体内容介绍如下所示。

Puppeteer 下单_测试工具_02

Puppeteer 下单_Puppeteer 下单_03

查看上面的博客系列内容介绍,你可能会发现和Cypress框架部分介绍的内容很相似。是的,因为搭建完善的UI层自动化脚本,不管选用哪个测试框架都要考虑测试数据、配置信息管理,定位操作页面元素并校验执行结果,调用接口或者操作数据库准备和清理测试数据等。那为什么还要花费大量章节讲解呢?因为选用Puppeteer框架时,实现过程上和Cypress差距比较大,故需要细致学习。另外,相较于Cypress框架部分的内容,在讲Puppeteer时,除了介绍如何使用框架外,还在代码可读性和脚本稳定性策略上有新的介绍。

最后,课程中讲解的所有案例代码都在此repo里面“ GitHub - tlqiao/puppeteer-e2e-test ”, 大家可以clone此repo,npm install安装所需依赖,npm run casename执行对应的测试案例。另外,案例使用的都是网上随机查找的web页面,如果你在学习课程过程中,某些页面已不存在导致案例运行失败,可自己找相似的网站用案例中提供的方法进行练