当前位置: 首页 > news >正文

史上最全,Web自动化测试面试题整理(附答案)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、什么是PO模式?

答:PO模式是一种设计模式,用于将页面上的元素和操作封装成对象,从而实现页面与业务逻辑的分离。PO模式可以提高代码的复用性、可读性和可维护性,同时也可以降低代码的耦合度和冗余度。

2、PO模式的封装原则有哪些?

答:PO模式的封装原则有以下几个:

每个页面对应一个类,每个类对应一个文件。
每个类中定义页面上的元素属性和操作方法。
每个元素属性使用定位器(locator)来表示,每个操作方法返回相应的页面对象或结果。

每个类中不包含任何断言或验证逻辑,只负责页面上的元素和操作。
每个类中使用初始化方法(init)来实例化驱动对象(driver)和等待对象(wait)。

3、selenium中隐藏元素如何定位?

答:selenium中隐藏元素指的是在网页上不可见,但在DOM树中存在的元素。隐藏元素可以通过以下几种方法定位:

使用find_element_by_*方法定位元素,然后使用is_displayed方法判断元素是否可见,如果不可见,则说明是隐藏元素。
使用execute_script方法执行JavaScript代码,通过document.querySelectordocument.getElementById等方法获取隐藏元素。

使用CSS选择器或XPath表达式,通过属性或函数来筛选出隐藏元素,如display:none或hidden()等。

4、举例一下你遇到过那些异常?

答:我在使用selenium WebDriver进行自动化测试时,遇到过以下几种异常:

NoSuchElementException:表示没有找到指定的元素。
TimeoutException:表示在指定的时间内没有找到指定的元素或条件。
StaleElementReferenceException:表示元素已经失效或不存在于当前页面。

WebDriverException:表示与驱动程序(driver)或浏览器通信出现问题。
ElementNotInteractableException:表示元素不可交互或被遮挡。

5、如何处理alert弹窗?

答:alert弹窗是一种JavaScript生成的对话框,用于显示一些信息或警告。selenium WebDriver提供了switch_to.alert方法,可以切换到alert弹窗,并进行以下操作:

text属性:获取alert弹窗的文本内容。
accept方法:点击alert弹窗的确定按钮。
dismiss方法:点击alert弹窗的取消按钮。
send_keys方法:向alert弹窗输入文本。

6、在selenium中如何处理多窗口?

答:在selenium中,有时候会遇到打开多个浏览器窗口的情况,比如点击一个链接或按钮后,会弹出一个新的窗口。这时候,我们需要切换到不同的窗口,才能进行相应的操作。selenium WebDriver提供了以下方法,可以处理多窗口:

current_window_handle属性:获取当前激活的窗口句柄。
window_handles属性:获取所有打开的窗口句柄,返回一个列表。
switch_to.window方法:根据窗口句柄切换到指定的窗口。

7、自动化中有哪三类等待?他们有什么特点?

答:自动化中有以下三类等待:

强制等待(sleep):指让程序暂停一定时间后再执行后续操作,时间是固定的,不受页面加载速度的影响。强制等待的优点是简单易用,缺点是浪费时间和资源,可能导致测试不稳定。

隐式等待(implicitly_wait):指设置一个全局的最大等待时间,在这个时间内,如果找到了元素,则继续执行后续操作,如果没有找到,则抛出异常。隐式等待的优点是可以提高测试效率和稳定性,缺点是只能判断元素是否存在,不能判断元素是否可见或可用。

显式等待(WebDriverWait):指设置一个特定的最大等待时间和一个或多个预期条件,在这个时间内,如果满足了预期条件,则继续执行后续操作,如果没有满足,则抛出异常。显式等待的优点是可以根据不同的条件进行灵活的等待,缺点是需要编写更多的代码。

8、如何提高selenium脚本的执行速度?

答:提高selenium脚本的执行速度有以下几种方法:

使用合适的定位器(locator),尽量避免使用CSS选择器或XPath表达式,因为它们的解析速度较慢。
使用合理的等待方式,尽量避免使用强制等待(sleep),而是使用隐式等待(implicitly_wait)或显式等待(WebDriverWait),根据实际情况设置合适的等待时间和条件。

使用多线程或多进程,将测试用例分配到不同的线程或进程中并行执行,提高测试效率和并发能力。

使用无头浏览器(headless browser),如PhantomJS或Chrome的无头模式,可以在不打开浏览器界面的情况下执行测试脚本,节省资源和时间。

9、你的自动化用例的执行策略是什么?

答:我的自动化用例的执行策略如下:

根据测试需求和测试计划,将测试用例分为不同的模块和优先级,按照模块和优先级进行组织和管理。
根据测试环境和测试资源,将测试用例分配到不同的测试机器上,并行或串行执行。

根据测试场景和测试目标,使用pytest或robot framework等测试框架,通过标记、参数化、钩子等功能,灵活地选择和控制需要执行的测试用例。
根据测试结果和测试报告,对测试用例进行分析和评估,对失败或不稳定的用例进行重试或修复。

10、什么是持续集成?

答:持续集成(Continuous Integration)是一种软件开发实践,指在软件开发过程中频繁地将代码集成到主干上,并进行自动化构建、测试、部署等操作。持续集成可以提高软件质量、效率和可靠性,同时也可以减少风险和成本。

11、自动化测试的时候是不是需要连接数据库做数据校验?

答:自动化测试的时候是否需要连接数据库做数据校验取决于具体的测试需求和测试目标。一般来说,在以下几种情况下需要连接数据库做数据校验:

当需要验证系统对数据库的增删改查操作是否正确时。
前端页面无法获知结果的时候,就需要操作数据库验证结果是否正确
纯接口测试中,没由提供任何可以直接获取结果的接口时,可以去数据库中验证结果是否正确

一些调用链路非常长才能知道一个结果是否准确时,可以通过数据库去验证结果是否正确

定时任务相关的业务:如数据同步,迁移等动作触发的时候可以考虑数据库验证结果

有些第三方的接口无法直接调用但是又步想mock的时候,可能需要往数据库修改数据进行后续操作
初始化或者清理测试数据的时候,可能需要数据库操作
以上等等是最常见的做法

12、如何去定位页面上动态加载的元素?

答:属性动态变化是指该 element 没有固定的属性值,所以只能通过相对位置定位比如通过 xpath 的轴,找到该元素的父节点或者子节点等方式

13、如何在定位元素后高亮元素(以调试为目的)?

答:在定位元素后高亮元素有以下几种方法:

使用JavaScript代码,通过execute_script方法执行document.querySelector或document.getElementById等方法,获取元素对象,然后修改元素的style属性,如添加边框或背景色等。

使用ActionChains类,模拟鼠标移动到元素上,然后执行move_to_element或move_to_element_with_offset等方法,使元素处于悬停状态。

使用selenium IDE插件,录制或编辑测试脚本时,可以在右侧的界面中看到元素被高亮显示。

14、什么是断言?

答:断言是指在测试过程中对测试结果进行验证的操作,判断测试结果是否符合预期。断言可以提高测试的准确性和可信度,同时也可以发现和定位问题。

断言有以下几种类型:
等值断言:判断两个值是否相等,如assertEqual、assertNotEqual等。
布尔断言:判断一个值是否为真或假,如assertTrue、assertFalse等。
包含断言:判断一个值是否包含或被包含于另一个值,如assertIn、assertNotIn等。
异常断言:判断一个代码块是否抛出指定的异常,如assertRaises、assertRaisesRegex等。

15、自动化测试过程中,你遇到了哪些问题,是如何解决的?

答:自动化测试过程中,我遇到了以下几种问题:

元素定位不准确或失败:我通过使用不同的定位器(locator)或组合多个定位器(locator)来尝试定位元素,或者使用JavaScript代码来直接获取元素对象。

元素不可交互或被遮挡:我通过使用显式等待(WebDriverWait)和expected_conditions模块中的element_to_be_clickable条件来等待元素可见且可用后再进行操作,或者使用JavaScript代码来直接操作元素对象。

页面加载缓慢或超时:我通过使用隐式等待(implicitly_wait)或显式等待(WebDriverWait)来设置合理的等待时间和条件来等待页面加载完毕后再进行操作,或者使用set_page_load_timeout方法来设置页面加载超时时间,并捕获TimeoutException异常。

测试用例不稳定或失败:我通过分析测试用例失败的原因和日志信息来找出导致不稳定的因素,并针对不同的因素采取相应的解决方案,如优化用例设计、增加用例重试机制、增加用例日志和截图功能等。

16、什么是关键字驱动测试?

答:关键字驱动测试是一种测试方法,指将测试用例中的操作步骤和验证点从测试脚本中分离出来,封装成一系列的关键字,如click、input、assert等。

在执行测试时,通过读取外部的关键字文件或表格,按照关键字的顺序和参数,调用相应的函数或方法来执行测试用例。关键字驱动测试可以提高测试用例的可读性、可扩展性和可维护性,同时也可以降低编码难度和技术要求。

17、如何实现关键字驱动测试?

答:实现关键字驱动测试有以下几个步骤:

设计测试用例,确定需要封装的操作步骤和验证点,以及对应的关键字和参数。
准备关键字文件或表格,选择合适的文件或表格格式,如TXT、Excel、CSV等,并将关键字和参数填充到文件或表格中。

编写测试脚本,使用Python或其他语言编写测试脚本,定义一系列的函数或方法,对应不同的关键字和参数,并使用相应的模块或库,如selenium WebDriver、unittest、xlrd等,来实现操作步骤和验证点。

执行测试脚本,使用Python或其他语言编写执行器(executor),使用相应的模块或库,如os、csv、xml等,来读取关键字文件或表格中的数据,并根据关键字和参数,调用相应的函数或方法来执行测试用例。

生成测试报告,使用allure或reportlab等工具,来生成可视化的测试报告,并展示测试结果和数据。

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

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

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

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

http://www.dtcms.com/a/362513.html

相关文章:

  • go 语言map是线程不安全的如何处理
  • Go 语言的 panic
  • WIFI协议全解析08:WiFi连接背后的握手过程,你的设备是如何“入网”的
  • USB4与PCIe的技术融合:新一代接口协议的架构革新
  • 2025 全球 GEO 服务商 TOP10 揭晓|硕芽科技引领生成搜索优化新时代
  • Java全栈学习笔记28
  • GitHub宕机自救指南
  • MyBatis Plus 【详解】| 学习日志 | 第 17 天
  • 【ES9.X】GitHub-events 聚合方案
  • 【系统架构设计(12)】系统运行与软件维护
  • 机器学习笔记-第二周
  • ansible判断
  • 【系统架构设计(11)】软件测试全景解析:从方法论到实践策略
  • 163起融资,梅卡曼德融资额夺冠,钉钉、百度智能云10周年,汉桑科技IPO| 2025年8月人工智能投融资观察 · 极新月报
  • 开发组件库【详细教程】含同时支持【完整引入】和【手动导入】,核心配置文件,本地调试,依赖的安装和声明,发布组件库等
  • @JsonFormat格式化日期
  • FastAPI 介绍及示例开发
  • 飞牛OS Nas,SSH安装宝塔后,smb文件不能共享问题
  • Elasticsearch赋能3D打印机任务统计分析
  • ASO优化从命名开始增长:打造Apple Store和Google Play完美应用名称
  • 【代码里的英雄传】Dubbo 的一生:一位分布式勇士的传奇旅程
  • 一键提取,是真强呀!~
  • 碳星球解决方案技术落地:多源数据整合 + AI 建模,赋能政府调控、企业管理与园区零碳治理
  • 《水浒智慧》第二部 “英雄是怎么炼成的” (上篇)读书笔记
  • GPT-5在医疗领域应用的研究效能初探(上)
  • Apache 的安装及基本使用
  • 文字识别接口-文字识别技术-ocr api
  • GEM5学习(3):如何快速创建一个组件
  • 【Maven】《十分钟搞清Maevn项目》
  • AI Agent 扣子介绍