20道经典自动化测试面试题

概述

觉得自动化测试很难?

是的,它确实不简单。但是学会它,工资高啊!

担心面试的时候被问到自动化测试?

嗯,你担心的没错!确实会被经常问到!

现在应聘软件测试工程师的岗位,几乎所有的公司都要求会自动化测试!那么,在面试的时候哪些问题会被面试官经常问到?哪些问题是面试官真正关心的?

下面通过20道经典自动化测试面试题。让你能够在面试的时候轻松应对,也让你在学习自动化测试的时候明白应该关注哪些内容,而不仅仅只是会调用接口模拟输入和点击操作!

图片

基础题

1、web自动化时,定位元素的方式有哪些?

答:web自动化有8种元素定位方式。与name有关的有3种:name、class_name、tag_name与link相关的有两种:link_text、partitial_link_text。还有一种是用id来定位。剩下两种是xpath和css定位,它们用元素路径来定位的。

如果元素存在id属性,我一定使用id,因为简单方便,定位最快。其次是Xpath和css,因为很多情况下html标签没有id属性。

2、如何去定位属性动态变化的元素?

答:先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)

3、启动浏览器的时候用到的是哪个webdriver协议?

答:http协议

4、XPath中使用单斜杠和双斜杠有什么区别?

答:单斜杠表示用绝对路径定位,双斜杠表示用相对路径定位。绝对路径就是从html根目录开始表示的元素路径。相对路径就是选择一个元素作为参考点,相对这个参考点元素开始表示的元素路径。

5、Selenium中有哪些验证点?

答:Selenium主要有3种验证点

① 检查页面标题

② 检查某些文字

③ 检查某些元素(文本框,下拉菜单,表等)

6、如何清除中文本框的内容?

答:使用clear()方法

driver.find_element().clear()

7、如何模拟浏览器的前后移动?

答:

driver.back() # 后退

driver.forward() # 前进

8、find_element()和find_elements()方法有什么区别

答:两个都是查找元素的方式

findelement()查找一个页面元素,只会返回WebElement对象

findelements()查找页面是所有符合匹配的元素,返回元素集合

9、如何判断case是否通过?

答:使用断言,与预期结果比较

10、等待元素加载的方式有几种?

答:有3种,强制等待、隐式等待、显式等待

图片

进阶题

1、定位不到元素怎么办?

答:

① 检查日志,确认当前页面有没有这个元素

② 如果有,检查定位方式有没有写错

③ 如果还没解决,检查元素是否在内联框里 如果在内联框里,需要先切换到内联框里再定位元素。操作完元素记得退出内联框

2、如果遇到验证码,需要这么处理?

答:① 让开发取消测试环境的验证码

② 让开发设置万能验证码(使用复杂的其他人无法猜到的验证码)

③ 如果是图像验证码,可以使用图像识别技术(难度大,准确率不高)

④ 先手动输入登录系统,保留登录成功的cookie。通过cookie绕过验证码

⑤ 让开发给验证码的数据库权限,从数据库中获取

3、遇到弹窗无法导致无法继续下一步操作怎么办?

答:

① 如果是JavaScript弹框,先通过switch_to.alert定位到JS弹框,再调用accept、dismiss等方法处理JS弹框

② 如果是系统某个操作步骤的提示框,可以点击关闭按钮,或者按提示操作即可

4、怎么切换浏览器窗口?

答:可以通过window_handles方法获取所有窗口的句柄。然后遍历句柄,使用switch_to.window()方法切换窗口,通过窗口title判断是否是目标窗口

例如,

handels = driver.window_handles
for handle in handles:driver.switch_to.window(handle)
if driver.title=="千锋教育":
# 如果是目标窗口,退出循环break

5、怎么实现拖拽元素的操作?

答:ActionChains类提供了模拟鼠标操作,如双击,右击,拖拽,悬停等操作

# 先导入 ActionChains类,并创建对象
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
# 具体操作,将动作加入任务列表
source = driver.find_element()
target = driver.find_element()
action.drag_and_drop(source,target) # 拖拽
# 处理任务列表
action.perform() # 依次执行任务列表中的所有操作

图片

设计思路

1、什么是page object设计模式?

答:

① 通俗来讲,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法

② 用例层从页面层调用操作方法,写成用例

③ 可以做到定位元素与脚本的分离

2、page object设置模式中,是否需要在page里定位的方法中加上断言?

答:不需要,page页只做元素抓取和操作方法

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

答:

① 自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;

② 有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;

③ 有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。

4、什么是数据驱动框架?它与关键字驱动框架有什么不同?

答:数据驱动框架中,测试用例逻辑驻留在测试脚本中。测试数据被分离并保存在测试脚本之外。测试数据是从外部文件(如Excel)中读取的,并被加载到测试脚本中的变量中。变量用于输入值和验证值。

关键字驱动需要开发数据表和关键字。它们独立于执行它们的测试自动化工具。可以使用或不使用应用程序来设计测试。在关键字驱动的测试中,被测试的应用程序的功能记录在一个表格中,以及每个测试的分步说明。

5、你觉得自动化测试最大的缺陷是什么?

答:

① 不稳定

② 可靠性不强

③ 不易维护

④ 成本与收益

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache-Doris单机部署

参考: 快速体验 Apache Doris - Apache Doris 1、Apache Doris是一款 基于MPP架构的高性能、实时的分析型数据库,以高效、简单、统一的特点被人们所熟知,仅需 亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点…

C#开发上位机应用:基础与实践

C#是一种流行的面向对象编程语言,常用于Windows应用程序的开发。上位机应用是一种用于监控和控制设备或系统的应用程序,通常与下位机(如传感器、执行器等)进行通信。在本文中,我们将介绍C#开发上位机应用的基础知识和实…

适用于Android的最佳数据恢复软件

如果您的 Android 设备崩溃,您需要找到一种方法来取回您的数据。幸运的是,有许多数据恢复程序可以帮助您恢复丢失的文件。有些是免费的,而另一些则需要付费。这是适用于Android设备的最佳数据恢复软件列表。 什么是数据恢复软件? …

设计模式8——原型模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 原型模式(Prototyp…

蓝桥杯物联网竞赛_STM32L071_18_长短按键检测

长短按键的检测是国赛题里面遇到的,省赛没出过有两种实方法 定时器配置: 定时器的话要比delay准确,其中tim7定时器的准度最高 定时器预分配配置32 - 1,计数周期是10000 - 1这样做那么32MHZ/32也就是一秒钟记录10^6的数&#xf…

HR人才测评,什么是亲和力?如何提高亲和力?

什么是亲和力? 无论是熟人还是陌生人,在沟通之时,一些特定的人群总是给人一种非常融洽的感觉,让人在与其聊天之时没有任何的防备,可以畅所欲言,而这样的人就是具备亲和力的人。 在职场之中,…

Pytorch入门需要达到的效果

会搭建深度学习环境和依赖包安装 使用Anaconda创建环境、在pytorch官网安装pytorch、安装依赖包 会使用常见操作,例如matmul,sigmoid,softmax,relu,linear matmul操作见文章torch.matmul()的用法 sigmoid&#xff0…

Java多线程(02)

一、如何终止线程 终止线程就是要让 run 方法尽快执行结束 1. 手动创建标志位 可以通过在代码中手动创建标志位的方式,来作为 run 方法的执行结束条件; public static void main(String[] args) throws InterruptedException {boolean flag true;Thr…

基于AT89C52单片机的智能窗帘系统

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/89276984?spm1001.2014.3001.5503 C 源码仿真图毕业设计实物制作步骤07 智能窗户控制系统学院(部): 专 业: 班 级&…

双指针法和链表练习题(2024/5/28)

1面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&#xf…

系统管理、磁盘分区

系统管理 业务层面:为了满足一定的需求所做的特定操作。 硬盘是什么,硬盘的作用: **硬盘:**计算机的存储设备,机械硬盘是由一个或者多个磁性的盘组成,可以在盘片上进行数据的读写。 连接方式&#xff1a…

【Rust日报】Rust 中的形式验证

文章 - 未来的愿景:Rust 中的形式验证 这篇文章回顾了形式化验证的基本概念,作者展示了如何使用 Hoare triples 来描述和推理程序的正确性,以及如何使用分离逻辑来解决验证的复杂性。文章还解释了为什么 Rust 适用于形式化验证,以…

go ast语义分析实现指标计算器

什么是AST 首先我们要知道AST是什么(Abstract Syntax Tree,AST),简称为语法树,是go语言源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。 …

我的心情JSP+Servlet+JDBC+MySQL

系统概述 本系统采用JSPServletJDBCMySQL技术进行开发,包括查看我的心情列表, 编辑我的心情信息、新增我的心情。使用方法 将项目从idea中导入,然后配置项目的结构,包括jdk,库,模块,项目,工件…

QT 自定义协议TCP传输文件

后面附带实例的下载地址 一、将文件看做是由:文件头+文件内容组成,其中文件头包含文件的一些信息:文件名称、文件大小等。 二、文件头单独发送,文件内容切块发送。 三、每次发送信息格式:发送内容大小、发送内容类型(文件头或是文件块内容)、文件块内容。 四、效果展…

基于springboot实现政府管理系统项目【项目源码+论文说明】

基于springboot实现政府管理系统演示 摘要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲&#xff…

饲料粉碎混合机组:打造精细化养殖

饲料粉碎混合机组是畜牧业和养殖业中不可或缺的设备。它集饲料粉碎和混合于一体,可以高效地处理各种饲料原料,提高饲料的均匀度和营养价值。 具体来说,饲料粉碎混合机组的主要功能包括将饲料原料进行粉碎,增加其表面积和调质粒度…

Steam游戏搬砖:靠谱吗,详细版说下搬砖中的核心内容!

可能大家也比较关注国外Steam游戏搬砖这个项目,最近单独找我了解的也比较多,其实也正常,因为现在市面上的项目很多都很鸡肋,而且很多都是一片红海,内卷太过严重,所以对于Steam的关注度也高很多,…

CTF-web-WP-攻防世界-1

1、view_source:打开开发者工具F12就能看到flag 2、robots (1)、使用目录扫描工具 工具:dirsearch命令:python dirsearch.py -u http://61.147.171.105:55644/ -e * (2)、看到下面有robots.txt文件,在URL后面输入&#xff0c…

INDICATOR 再c嵌入sql环境中的作用

在C语言嵌入SQL(Embedded SQL)的环境中,INDICATOR关键字用于处理数据库中的NULL值,以及管理与之相关联的宿主变量(host variables)。具体来说,它的作用主要体现在以下几个方面: NUL…