目录:导读
前言
1、你们自动化怎么做的
在需求分析阶段,跟前端沟通好,规范前端代码,避免造成后期自动化工作无法开展的问题。
在用例设计阶段,挑选出适合做自动化的用例,单独整理到一个文件保存。
在项目中后期,趋于稳定之后,就可以开始设计自动化脚本了。
语言python+自动化测试工具selenium+单元测试框架unittest(这里可以挑自己熟悉的说,比如pytest等)+分层模型PO+测试报告HTMLTestRunner/Allure
2、selenium是什么,测试所需要包括的工具
selenium是基于UI的模拟用户操作行为的一种web自动化测试工具包,常用于web自动化测试。
需要的工具:webdriver,即浏览器驱动(不同的浏览器驱动不同,与浏览器的版本也相关)。
代码库,python 中的selenium库。
3、说一下元素定位的基本方式
name
id
classname
tagname
link_text
partial_link_next(模糊的文本定位)
css
xpath
4、自动化的测试用例写了多少条
这里回答之后很可能会问总的用例写了多少条,建议回到自动化测试用例占全部用例的15%左右(不超过20%)。
5、自动化的测试脚本你在编写的时候有遇到什么问题吗
1)检查自己定位方式是否有误?
2)程序加载过快,页面来不及反应? – 元素等待
3)有些输入框必须先点击,再输入
4)需要操作的元素在新窗口? – 切换到新窗口(句柄)
5)需要操作的元素在frame/iframe标签内? – 切换表单
6)需要操作的元素被其他元素遮挡了? – 修改display的值为none
7)需要操作的元素是个只读元素? – 修改value的值.或者删掉readonly属性
8)需要操作的元素在页面靠下位置?-- 操作滚动条
6、怎么样提高自动化的运行速度和效率
少用sleep,多用元素等待;
在case层,把连接数据库的代码写到setUpClass里面;
如果涉及到多个elif,把最有可能出现的条件写到前面;
如果不是大量的测试数据,尽量减少文件IO(input/output)操作;
对于一些页面.必须全部加载完成后才会继续执行,可以使用显示等待,这一个元素找到后就继续执行,不必等所有元素加载成功;
提高脚本的稳定性,避免因为脚本不稳定影响效率;
7、python的装饰器是什么?有哪些?
在不改变代码的前提下,让代码实现更多的功能
@classmethod
@staticmethod
@ddt
@data
@unittest.skip
8、怎么样提高自动化脚本的稳定性
1)不使用xpath的绝对路径.相对路径,找父标签不要跳太多的层级.
2)因为网络的原因造成不稳定. 使用隐式等待.
3)因为一些随机出现的元素导致不稳定. 使用try
4)因为测试数据造成不稳定. 在teardown里面删掉.
9、什么样的项目适合做自动化(你之前xx项目为什么做的自动化测试)
项目比较稳定周期长,需求变化少,UI界面变化少
重复测试或者回归测试多
10、说一下元素等待
隐式等待:
隐式等待是全局性的,一旦设置,它将对测试脚本中的所有元素生效。
它告诉WebDriver在抛出找不到元素的异常之前,应该等待多长时间。
隐式等待适用于页面上所有元素的查找操作。
如果在设置的时间内找到了元素,WebDriver将继续执行;如果超时,则抛出NoSuchElementException。
隐式等待通常在测试脚本开始时设置一次。
显示等待:
显式等待是局部性的,它只对特定的元素查找操作有效。
它允许你等待某个特定条件成立,例如等待某个元素出现。
显式等待更加灵活,可以等待特定的元素或条件,而不是盲目等待固定的时间。
显式等待通常使用WebDriverWait和ExpectedConditions类来实现。
显式等待不会使测试脚本暂停执行,它会周期性地检查条件是否满足。
11、元素定位不到有哪些可能
1)网速问题,元素没加载出来
2)代码书写错误
3)嵌套在frame/iframe标签中
4)新的元素在新的窗口中,切换窗口switch_to代码
5)在页面下方,需要操作滚动条
6)元素只读readonly
12、深拷贝和浅拷贝的区别
a = [1,3,[4,5]]
# 浅拷贝: 拷贝的内存空间的地址.等于都是指向的同一个对象.如果源数据修改,拷贝后的内容也会修改.
b = a.copy() # 浅拷贝
print(b)
a[2][0] = 99 # 把a的嵌套列表里面的4的值改成99
print(a)
print(b) # b也随之更改.
# 深拷贝: 在内存空间里面另外开辟一块空间,用来保存值.源数据修改不会影响到修改后的数据.
from copy import deepcopy
a = [1, 3, [4, 5]]
b = deepcopy(a)
print(b)
a[2][0] = 99
print(a)
print(b)
最新最全花1W买的Python+Selenium全栈Web自动化测试
下面是我整理的2025年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
人生最耀眼的不是站在聚光灯下的瞬间,而是黑暗中依然前行的勇气。当你觉得撑不住时,请记住:每个伟大的突破都藏在"再坚持一天"的决定里。你的脚步,正在创造属于自己的传奇!
别被暂时的风雨模糊了视线!那些让你流泪的磨练,正在雕刻更璀璨的未来。当别人选择放弃时,你的坚持就是胜利的宣言。向前奔跑吧,整个世界都在等待你的光芒绽放!