高级测试面试-ui/接口自动化 面试题解析

ui自动化测试

Selenium的UI自动化面试中常见的问题包括:

1. Selenium的工作原理是什么?

了解Selenium内部是如何工作的,通过WebDriver API控制浏览器。

2. Selenium定位元素的方法有哪些?

id、name、class、xpath、css等,要对比优缺点。

3. 如何处理动态id、动态xpath的元素定位?

通过包含特定文本、父元素、兄弟元素等相关属性定位。

4. Page Object Model的优势是什么?

提高代码复用,减少重复,使框架可维护。

5. 如何处理alert/iframes弹出框?

使用alert/switch_to方法。

6. 如何处理下拉菜单、多选框等元素?

使用Select类的方法。

7. 浏览器驱动ChromerDriver和Chromedriver的关系?

chromedriver实现驱动浏览器。

8. 如何实现跨浏览器测试?

通过WebDriver的子类化实现,配合浏览器驱动。

9. 怎么进行元素等待?

显示等待和隐式等待的区别及应用。

10. 自动化框架设计的思想和原则?

数据驱动、关键字驱动、业务关键词拆分等。

11. 如何监控自动化运行结果?

可以使用ReportNG/alure/htmltestreuuer生成测试报告。

12. 自动化测试的优势和使用场景?

回归测试,重复测试用例,稳定性验证等。

13. 如何测试含有拖拽功能的页面,例如图片组件的拖拽?

可以利用ActionChains的drag_and_drop方法实现拖拽效果的自动化。指定源元素和目标元素进行拖拽。

14. 如何处理上传文件功能的自动化?

使用send_keys方法,通过文件路径设置输入框内的值,达到上传文件的效果。

15. 如何获取元素的属性、文本、位置等信息?可以利用Selenium的方法如get_attribute、text、location等获取元素相关信息。

16. 测试下拉菜单时,如何判断选中了哪一项?

通过获取下拉菜单的selected元素信息来判断被选中的option。

17. 如何测试键盘操作、鼠标操作等自动化场景?

使用keyboard、mouse相关的API发送虚拟输入事件。

18. 测试弹窗时,如果alert无法切换,该如何处理?

可以通过执行JavaScript代码的方式来关闭弹窗。

19. 测试浏览器跳转时,如何获取新打开的窗口或标签页?

调用switch_to_window切换句柄定位新的浏览器窗口。

接口自动化:

1. pytest的优势有哪些?

简单易用,无需类和方法,可通过函数和模块组织测试

支持参数化,可以参数化fixture实现数据驱动
丰富的第三方插件生态系统
详细的断言和日志,方便调试定位

2. 如何编写parametrized参数化fixtures?

使用@pytest.mark.parametrize装饰器,传入不同的参数组合
加载测试数据文件,根据数据行驱动不同的参数

3. 如何实现pytest fixtures的前置后置和作用域?

使用yield语句实现 teardown
通过scope参数控制作用域:function, class, module

4. pytest中assert和unittest中的assert区别?

pytest的assert本身是一个函数,更简洁
unittest的assert需要导入模块并以Assert开头

5. 如何加载和读取配置文件中的配置?

使用pytest.config.getoption方法
也可以用yaml、ini等模块加载配置文件

6. pytest Marks标记的用法是什么?

用于标记测试用例,通过标记过滤用例
@pytest.mark.标记名 标记用例
- -m 选项运行指定标记的用例

7. 如何自定义和调用pytest fixtures?

用@pytest.fixture装饰器
测试用例中以参数形式接收fixtures

8. pytest生成测试报告的方法有哪些?

pytest-html:生成HTML格式报告
allure-pytest:功能丰富的测试报告框架

9. mock的使用场景有哪些?如何使用mock模拟requests请求?

模拟方法、API的返回结果
使用mock模块的patch方法模拟requests的行为

10. 如何进行接口测试结果的断言?-

使用assert语句进行断言
检查响应代码、响应内容等是否符合预期

11. pytest如何跳过测试用例或者标记条件跳过?

使用@pytest.mark.skip装饰器跳过用例
根据标记条件跳过用例,如 -m 'not 标记名'

12. JSON、YAML等测试数据的加载方式?

可以使用json、yaml模块加载json、yaml文件
- 解析后传递给参数化的测试用例使用

13. pytest如何获取测试报告相关metadata?

在pytest.ini定义 markers,自定义标记
测试用例使用标记,报告中会显示标记的metadata

14. pytest如何重复执行失败的测试用例?

reruns:设置失败重跑次数
- --lf, --last-failed 只重跑失败用例

15. 如何基于pytest实现接口自动化框架设计?

conftest.py 中定义fixture
测试文件按模块组织用例,调用fixture
hook函数可扩展用例执行流程

16. pytest的插件机制是如何扩展的?、

实现对应的hook函数
通过entry_points注册扩展点
插件通过钩子挂载到pytest生命周期

17. 测试用例如何参数化?

@pytest.mark.parametrize装饰器
参数可以来源于函数、文件等

18. hook函数的作用是什么?

用于插入额外的逻辑到pytest的执行流程
如添加 setup, teardown, 生成报告等

19. 如何基于fixture进行前后置处理?

fixture可返回对象,在测试用例中使用
yield前为setup, yield后为teardown

20. pytest运行测试用例的顺序规则是什么?-

默认按文件名排序,再按函数名排序
可以通过标记按特定顺序运行

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值