吐血整理,Web自动化测试面试题+答案整理(详全)


前言

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性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最耀眼的不是站在聚光灯下的瞬间,而是黑暗中依然前行的勇气。当你觉得撑不住时,请记住:每个伟大的突破都藏在"再坚持一天"的决定里。你的脚步,正在创造属于自己的传奇!

别被暂时的风雨模糊了视线!那些让你流泪的磨练,正在雕刻更璀璨的未来。当别人选择放弃时,你的坚持就是胜利的宣言。向前奔跑吧,整个世界都在等待你的光芒绽放!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值