selenium_结构化思考

今天跟朋友讨论了一下他公司selenium设计方式,对我来说很有启发。故总结下,后续根据这个理解在项目中完善下。

大致的项目结构:

  • 基础方法
  • 数据提供
  • 元素封装
  • 模块封装
  • 用例组合

基础方法:

  • 项目中全部方法封装汇总
  • 项目中需要用到的基础功能支撑

数据提供:

  • 数据库表的相关操作封装
    其实最重要的还是表(库)的设计,因为在后续的操作中会出现很多相同数据的依赖,这样就需要我们能将表的设计更加合理,用起来才会更加方便-(这也是我目前所尴尬的地方)
  • Redis库相关操作的封装
    这里主要存储一些临时数据,比如项目中生成的且对后续用例中依赖的数据;另外可以将一些预置数据提前从数据库中放在redis中,从而提高执行速度

元素封装:

  • 这里他们用的是统一处理,即 抓取被测页面元素,重新组装为xpth格式并分类,这样应用时直接调用
  • 我准备将以页面为一个文件进行当前页面元素的封装,达到的效果就是使用这个元素的时候直接pages.element_name

模块封装:

  • 这是一个比较难的问题了,有的时候会出现模块的边界划分问题;什么是一个模块,大到完成一个功能,小到一个元素的操作;
  • 目前来说模块的划分还是跟实际业务联系起来是比较好的,最常见的登录、注册、退出登录等等,单独封装保准没问题;
  • 其实有的时候让你去硬生生的建一个模块或许挺难的,但是从用例中提取出通用的部分,单独封装起来这样就轻松许多;-- 我这么做的
  • 还有个问题,我希望再用例中只是实现顺序、逻辑的拼装,不涉及到元素操作类的东西,这样的话元素的所有操作都将在模块中完成;
  • 最后最重要的就是在模块中要完成本模块元素的校验

用例组合

  • 基础的东西已经在前几步全部完事了,在这里就轻松很多了,按照业务流程拼接组装吧;

总结:

1.原理比较浅显,基础方法数据元素模块提供基础服务,主要的工作量在模块封装
2.这种结构增加了复杂度,且维护成本增加了一层,但是代码查看起来比较整洁规范,个人感觉比较适合业务较稳定的公司;
3.模块封装的健壮性很重要,且模块大大增加的用例的组装速度,如果公司业务稳定,并且在模块中有一定沉淀,那么再新增一个UI校验点将简单很多;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,812评论 25 709
  • menghui524阅读 155评论 0 0
  • 风筝是人放的 彩云是天生的 风筝的出彩是短暂的 云彩的变幻是无穷的 风筝再高 也要落地 云彩再低 始终在天 红尘嚣...
    风起龙飞阅读 1,284评论 6 4