Web自动化测试+测试框架详全,跟着测试老鸟一篇打通...


前言

1、你做过ui自动化吗?用什么做的?

做过,用的是python+selenium+unittest单元测试框架来做的,那我大概和您讲一下我做ui自动化的流程吧

答:首先的话就是我需要打开pycharm然后新建一个py模块,然后导入selenium模块,time模块等等,然后通过from selenium import webdriver语句导入webdriver模块。

然后创建一个driver对象:driver=webdriver.Chrome(),再通过driver.get方法来打开我们测试环境的地址,再使用 driver.maximize_window()最大化浏览器窗口,然后会使用driver.implicitly_wait()设置一个隐式等待。

我可以通过driver.find_element_by_id,或者xpath,name,class,css等元素定位方法来进行定位到用户名和密码输入框,并且通过调用send_keys进行输入用户名和密码,最后通过调用click方法进行登录。

登录之后,有一些表单的填写页面(比如主要有姓名、证件信息、手机号码、常住地址、邮箱、紧急联系人等等)。

如果是输入框我依旧用send_keys,如果有一些下拉框我会导入Select类,通过select_by_value方法进行定位,如果有滑动的地方我也会用window.scrollTo()方法。

设置变量为js,然后通过driver.execute_script()来调用js变量来达到滑动滚动条的目的,包括如果是有iframe弹框的话,我首先会通过switch_to.frame()进入到iframe弹框,然后再进行其他的操作。

如果要退出iframe框的话,直接用switch_to.default_content()方法就可以了,最后写完整个一个流程之后,我还会通过调用text方法拿到某个元素的文本值赋值给到一个变量,然后通过assert方法把预期结果和实际结果进行一个断言。

以上就是我做ui自动化的一个大致流程,但是这是我们最开始做ui自动化的方法,后面因为做的时间也比较久,用例也比较多,所以后续用了一些PO设计模式和分层对用例进行了一些封装

2、面试官问:你之前是怎么怎么做的UI自动化?

答:我之前是用的python+selenium结合unittest来做的,我们刚开始都是用的线性脚本去写的,但是后面因为用例比较多,我采用了框架去进行了分层封装,需要跟您详细讲一下分层结构的代码吗?

1)如果面试官回答讲一下吧,那就需要讲详细一点
2)如果面试官说不用,大概讲一下分层架构就可以了,那就讲简单一点

答:我们之前这个UI自动化框架大致分了6-7层,首先

第1层的话是config配置层,这个里面主要是封装了一些我们测试环境的url地址和一些用户名密码等等

第2层是utils工具类层,这个里面主要封装了一些读取Excel表格,发邮件和读取配置文件的工具类

第3层是一个public基类,这个里面主要封装了元素定位的方法比如把id,name,class,xpath,css等等都封装在一个类方法里面了,还把一些send_keys和隐式等待都进行了二次的封装

第4层就是testcase用例层了,这个里面主要就是定义一个类然后继承unittest.TestCase这个类,通过unittest单元测试框架来管理用例,然后编写用例也用到了PO设计模式,就是把我们的元素定位和流程层,代码层进行了分离,最后用例写完再通过self.assertEquals进行一个断言

第5层就是run运行层,会把所有的用例放在suite套件里面,然后调用run方法运行套件

第6层就是通过HTMLtestrunner模块生成测试报告,然后再通过Jenkins做可持续集成,在回归测试阶段,每天晚上都会运行一下我们的ui自动化用例,大致的一个框架结构就是这样的。

在这里插入图片描述

3、自动化中遇到了什么问题?如何解决?

1)有的时候动态元素定位不到
==》我会采用xpath相对路径自己写xpath语法来进行定位

2)有的时候自动化脚本执行速度较慢
==》我会尽量少用xpath绝对路径,因为xpath绝对路径执行速度很慢,并且我会少用sleep方法,涉及到一些if elif条件判断时,尽量把可能发生的条件放在前面写,这样可以减少程序判断的次数,提高效率

3)弹框内有按钮点击不到
==》弹框里面有设置滚动条,首先进入弹框里面,将滚动条滑动到最底部才可以点击确定或者取消按钮

4)有的时候元素没有加载出来
==》我会通过设置隐性等待和显性等待来解决

5)有的时候还会碰到iframe框
==》我会通过driver.switch_to.frame先进入到iframe框里面,再去定位到里面的元素

6)有的时候还会有alert弹框
==》我会先点击确认弹框活取消弹框之后再定位其他的元素

4、UI自动化的等待方式有哪些?【超级重点】

1)强制等待
==》sleep(5) 一定要等待5秒才能继续

2)隐式等待
==》称为智能等待又是全局等待,需要等待整个页面元素加载完成,比如在第1秒的时候加载完成则直接往下继续,如果超过5秒还没加载完成则会报错并且抛出异常的信息

3)显式等待
==》作用于局部的、等待页面某个特定的元素加载完成,比如在第1秒的时候加载完成则直接往下继续,并且会每隔0.5秒去页面刷新寻找元素,如果超过5秒还没加载完成则会报错并且抛出异常的信息

5、什么样的项目适合引入自动化测试?UI自动化的覆盖率有多少?

1)项目周期长
2)迭代的周期长
3)需求变更不频繁
4)页面元素和页面的控件变更不频繁

6、ui自动化中的PO设计模式是什么意思?

答:po设计模式英文全称就是page object,中文的意思就是页面对象设计模式,指的是所有当前页面的控件和元素都为类或者对象的属性,我们平时用PO设计模式。

主要分了三层,最底层是元素定位层,就是把元素定位方法id,xpath,name,css等等和元素通过元组来接受,并且放在一个类当中,第二层是流程层只写我们的流程,第三层就是我们的用例也就是我们的代码层了。

代码层会调用流程层,并且在需要元素定位的时候都是把底层已经封装好的元组也传进来就可以了,相当于就是不会把代码写死,起到了一个分离和解耦的作用,这个就是我理解的PO设计模式。

po设计模式优势如下:
1)让元素定位,流程,案例进行了分离
2)前端代码关于元素定位有改动可以随时进行处理,修改非常方便
3)让代码间的耦合性降低
4)降低代码的维护成本,代码的复用性高

最新最全花1W买的Python+Selenium全栈Web自动化测试

下面是我整理的2025年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最动人的风景,往往藏在最难攀爬的高处。当你觉得力竭时,请记住:每一次坚持都在雕刻更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!

你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值