测试人社区

web自动化PO设计模式的几点疑问

1、将driver的操作封装在base_page里后,就PO的设计模式来说是完全不能在其他PO模块里去使用driver吗(就python语言上来说应该是可以在子类如Index类里去调用self._driver的 )?比如ActionChains(driver).click(element).perform(),这个类在调用的时候就需要传入driver,这种情况下,是让子类去调用self._driver,还是在base_page里再去封装一个action方法。如果都封装到base_page里,这个类会不会太臃肿了,感觉什么都在往里面塞

2、base_page里封装的浏览器复用,在实际项目中也是这样封装吗?如果是这样的话,在jenkins配置的时候是不是也就需要有相应的chrome -remote-debugging-port=“”命令,让执行机启动一个debug的浏览器

3、实际的项目中,网站的登录代码放在哪里好呢?还是base_page中吗?

4、web自动化用例的测试范围。我的疑问是,web自动化只是测试功能流程,还是说是功能流程和页面UI,比如企业微信通讯录页面,下图,图中圈起来的这些元素需要检查吗?


希望老师可以以上述页面为例,伪代码写下这个页面所有的PO封装

5、PO设计的课程里老师也提过不是所有的页面、不是页面里所有的东西都要封装,这些没有封装的是直接在测试用例里面去写吗?

辛苦老师抽时间答疑下

就我的理解来说:
1.PO的实现来说,怎么方便维护怎么来,没有明确说你必须怎么去封装,你觉得base_page臃肿的话,那么你还可以设置工具子类啊什么的
2.浏览器的复用一般在实际项目很少这么做的,你让系统自动跑的时候一般都是全自动,比如你的chrome -remote-debugging-port=的扫码还是得手动来,一般这个就直接让开发去掉这个步骤什么的
3.实际项目中登录完全可以单独写一个封装的
4.一般UI自动化关注的是主流程的,页面的全元素检查也是可以做的,但一般不会这么做,要考虑投入产出比
5.UI自动化不是100%去自动化,若全部去做,维护性也差,需要的人力相当庞大

上面这位同学说的很对了。我再补充几点
先明确几个点:

  1. 设计模式是一种思想,他不是一种强制性的语法。base_page 更多是为了封装通用的工具。如果你调用某种driver的api比如 touch_action这些只有一次、2次的话可以不封装。
    这样封装的好处在于,比如测试团队决定给每个find 都要加log,方便定位问题;再比如公司要求换技术栈,从selenium换到cucumber。那封装这个base_page的作用是不是很明显了。
  2. 测试行业有一个金字塔分层模式。基本是行业内的事实标准了。基本不会有公司去做全量的UI测试。所以哪些功能要做自动化,应该根据测试用例的稳定性和重要性去规划。
  3. 没有封装的应该是在page 里面而不是测试用例内。可以再看一遍PO部分的录播以及直播。