Selenium java+selenium 自动化测试

jc · 2020年11月16日 · 最后由 jc 回复于 2020年11月17日 · 5436 次阅读

  在项目上使用自动化测试,是为了跑主流程的回归测试,提高测试效率,在每个测试版本中把主要的精力放在发版内容新增的需求中;

  根据项目的功能模块,把业务主流程和使用频率高的功能抽取出来进行自动化测试,作为发版前的主流程回归测试辅助作用;

  大致的流程是:

    1、先做 po 设计,把最原始的脚本重构封装并参数化,初步设想,base 层,element 定位层,handle 层,business 层,最后是 testcase 层;

    base 层,用于传入 browser(浏览器的选择,便于以后扩展兼容性测试)和 driver 的基本方法(findElement,url 的获取,frame 的切换,窗口放大);

    element 定位层,用于各业务 page 中元素的获取封装、By 元素定位方式的封装、从配置文件根据 key-value 的形式读取元素定位方式和定位值的封装;

    handle 操作层,用于根据页面模块 page 中的元素的操作封装;

    business 业务层,用于业务逻辑操作;

    testcase 层,用于组装 case,输入测试数据和断言判断;

    2、建成 maven 工程,调用第三方的 jar 优化,实现日志收集,TestNG 的使用,测试报告的生成以及 jenkins 的配置;

   下面每层贴部分的典型代码展示:

配置文件内容:

浏览器选择:

driver 基本方法重新封装:

读取配置文件内容,By 封装

element 定位层:

handle 操作层:

business 业务操作层:

testcase 层:

共收到 13 条回复 时间 点赞

图挂了

jc #2 · 2020年11月16日 Author
娃哈哈 回复

显示看不到?我这边看自己的文章是正常,这么诡异

element 定位层太重复了,几千个标签就要写几千个方法,这写的下去?

需要加大产出才能得到更好的投入产出比。故需覆盖尽可能多的流程,而不仅仅是业务主流程和使用频率高的功能点。

最近也在做 web UI 自动化,整体思路跟楼主差不多;
** 主要差别是在 element 定位层与 handle 操作层的区分上;
当前定位元素在我看来无非两种,直接定位(id,name)与间接定位(xpath,css)。
=》所有元素定位我就只使用了 id 与 xpath 两种方式,完成可以满足需要。
=》id 与 xpath 的区别就是 xpath 是'//'开头的 =》那 element 层就只需要写个元素定位就可以(至于是 xpath 还是 id 就让 handle 层判断一下就行了)

封装太多层了吧,后续难以维护啊

目测难以维护,后面的配置文件几千项,无法修改,当用例超过 1000,页面改版 3 次之后,楼主就会放弃

哇,楼主 ,分享虽可贵,可别误导新同学啊

太繁琐的,基于 PageFactory 的模式去写的话,没必要把定位元素的东西放在配置文件里,这种后期维护会很麻烦,而且对于写的人来说,也不是很易用

你这么写很难维护的。。。

jc #11 · 2020年11月17日 Author
韩将 回复

已经放弃维护😅

新手提问::以登入为例子,自动化测试只测试登入吗? 错误密码登入后会弹出提示框要不要加入自动化测试呢?

jc #13 · 2020年11月17日 Author
战 神 回复

好的,仅做自己菜鸡的一些工作总结记录,也是在这社区内学习。

jc 关闭了讨论 11月17日 11:45
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册