自动化测试面试题及答案大全(上)

  1. selenium中如何判断元素是否存在?
    没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断
  2. selenium中hidden或者是display = none的元素是否可以定位到?
    不可以,想点击的话,可以用js去掉dispalay=none的属性
  3. selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
    1.首先通过封装find方法,实现wait_for_element_ispresent(WebDriverWait)
    2.在对页面进行click之前,先滚动到该元素(通过Js封装),避免在页面未加载完成前或是在下拉之后才能显示。
    3.不同方式进行定位,与expected_conditions判断方法封装,循环判断页面元素出现后再操作;
    4.开发人员规范开发习惯,如给页面元素加上唯一的name,id等。
  4. 如何提高selenium脚本的执行速度?
    1.优化测试用例。设置等待时间的时候,少用sleep,尽量不用implicitly_wait,多用显式等待方法;
    2.减少不必要的操作步骤。如经过三四步才能打开要测试的页面的话,可以直接通过网址来打开;
    3.中断页面加载。如果加载的内容不影响我们测试,就设置超时时间,中断页面加载;
    4.使用Selenium grid,通过testNG实现并发执行。 在编写测试用例的时候,实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。
  5. 用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
    1.在经常检测失败的元素前尽量加上显式等待时间,等要操作的元素出现之后再执行下面的操作;
    2.多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;
    3.多用 try 捕捉,处理异常;
    4.尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。
  6. 如何设计高质量自动化脚本
    1.使用四层结构实现业务逻辑、脚本、数据分离。
    2.使用PO设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素定位发生了改变,我们只用修改这个页面的元素属性
    3.对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。
    4 测试用例设计中,减少测试用例之间的耦合度。
  7. 你的自动化用例的执行策略是什么?
    1.自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;
    2.有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;
    3.有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。
  8. 什么是持续集成?
    频繁的将代码集成到主干,持续性的进行项目的构架,以便能能够快速发现错误,防止分支大幅度偏离主干
  9. 自动化测试的时候是不是需要连接数据库做数据校验?
    UI自动化不需要
    接口测试会需要
  10. Selenium有几种定位方式?你最偏爱哪一种,为什么?
    Selenium有八种定位方式:
    与name有关的有三种:name、class_name、tag_name
    与link相关的有两种:link_text、partitial_link_text
    与id有关:id
    全能选手:xpath、css_selector
    如果存在id,我一定使用Id,因为简单方便,定位最快。其次是Xpath,因为很多情况下html标签的属性不够规范,无法唯一定位。Xpath是通过相对位置定位
    如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。
  11. 如何去定位页面上动态加载的元素?
    首先触发动态事件,然后再定位。如果是动态菜单,则需要层级定位。——JS实现(对动态事件封装)
  12. 如何去定位属性动态变化的元素?
    先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)
    属性动态变化也就是指该元素没有固定的属性值,可以通过:
    JS实现,
    通过相对位置来定位,比如xpath的轴,paren/following-sibling/percent-sibling
  13. 点击链接以后,selenium是否会自动等待该页面加载完毕?
    不会的。所以有的时候,当selenium并未加载完一个页面时再请求页面资源,则会误报不存在此元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。
  14. webdriver client的原理是什么?
    在selenium启动以后,driver充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client.
  15. webdriver的协议是什么?
    WebDrive协议本身是http协议,数据传输使用json
  16. 启动浏览器的时候用到的是哪个webdriver协议?
    -http
  17. 什么是page object设计模式?
    1.通俗来讲,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法
    2.用例层从页面层调用操作方法,写成用例
    3.可以做到定位元素与脚本的分离
  18. 怎样去选择一个下拉框中的value=xx的option?
    1.select类里面提供的方法:select_by_value(“xxx”)
    2.xpath的语法也可以定位到
  19. 如何在定位元素后高亮元素(以调试为目的)?
    -重置元素属性,给定位的元素加背景、边框
  20. 什么是断言和验证?
    断言(assert):测试将会在检查失败时停止,并不运行后续的检查
    优点:可以直截了当的看到检查是否通过
    缺点:检查失败后,后续检查不会执行,无法收集那些检查结果状态
    验证(vertify):将不会终止测试
    缺点:你必须做更多的工作来检查测试结果:查看日志——>耗时多,所以更偏向于断言
  21. page object设置模式中,是否需要在page里定位的方法中加上断言?
    不需要,page页只做元素抓取和操作方法
  22. page object设计模式中,如何实现页面的跳转?
    初始化driver参数,Page类传driver参数
  23. 自动化测试用例从哪里来?
    -手工用例中抽取
  24. 你觉得自动化测试最大的缺陷是什么?
    -不稳定
    -可靠性不强
    -不易维护
    -成本与收益
  25. 什么是分层测试?
    1.数据层
    2.接口层’
    3.UI层
  26. webdriver可以用来做接口测试吗?
    不可以,webdriver是专门做web的UI自动化参数
  27. get和post 的区别?
    1、GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。
    POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
    2、传输数据的大小
    使用GET请求时,传输数据会受到URL长度的限制。
    对于POST,理论上是不会受限制的
    3、安全性。POST的安全性比GET的高
  28.   总结

    如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

      自动化测试相关教程推荐:

    2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

    2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

    测试开发相关教程推荐

    2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

    postman/jmeter/fiddler测试工具类教程推荐

    讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

    2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

    2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

      总结:

     光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

    如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

    如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

    在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

    我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

    测试开发视频教程、学习笔记领取传送门!!

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

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

相关文章

[ASIS 2019]Unicorn shop

点入题目看见四个可购买的东西,但是都购买不了,最后一个价格大的脱俗,猜测成功买到后会得到flag,但是购买时提示操作失败只允许一个字符。查看源码发现在utf-8后面特意标注提示 涉及到了字符编码和字符集的概念: UTF-…

2024 年度 AAAI Fellows 揭晓!清华大学朱军教授入选!

今日,国际人工智能领域最权威的学术组织 AAAI 揭晓 2024 年度 Fellows 评选结果,新增 12 位 Fellow。 其中,清华大学计算机系教授朱军因「在机器学习理论与实践方面做出的重大贡献」而成功入选,成为本年度入选的唯一华人学者&…

2023最大技术潮:大模型冲击下的智能汽车

作者 |德新 编辑 |王博 过去这年最大的技术潮,非大模型莫属。 2023年初,由ChatGPT掀起的浪花,迅速地演变成了席卷全球的AI科技浪潮。汽车行业在其中也不可避免。各大车企纷纷投入与大模型相关的布局。 长城官宣成立了AI Lab,到…

尝试解决 H5无法播放mp3录音问题

1.问题描述 将H5传递的录音 media_id 通过微信获取临时素材接口获取到录音文件流之后,转为mp3文件上传到服务器。但是H5却没办法播放这个mp3文件。这个文件只能在播放器上播放,比如网易云什么的。不能直接在微信,浏览器上播放 2.原因分析 通…

山西电力市场日前价格预测【2024-01-04】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-04)山西电力市场全天平均日前电价为197.93元/MWh。其中,最高日前电价为376.04元/MWh,预计出现在18:15。最低日前电价为0.00元/MWh,预计出…

Go语言基础简单了解

文章目录 前言关于Go学习流程 基础语法注释变量常量数据类型运算符fmt库 流程控制if、switch、selectfor、break、continue遍历String 函数值传递和引用传递deferinit匿名、回调、闭包函数 数组和切片Map结构体自定义数据类型接口协程和channel线程锁异常处理泛型文件读取文件写…

数据库中的几种锁

数据库锁 1.数据库锁的种类 以 mysql innoDB 为例,数据库的锁有 排他锁,共享锁,意向锁,自增锁,间隙锁,锁的范围有包括,行锁,表锁 ,区间锁。 从应用研发的视角&#xff…

C++:第十一讲DFS深搜

Everyday English Your optimal career is simply this: Share the real you with physical world through th e process of creative self-expression. 你的最佳职业很简单,就是这样:通过创造性自我表达的途径和世界分享真实的你。 前言 今天带着大家…

一元函数微分学——刷题(14

目录 1.题目:2.解题思路和步骤:3.总结:小结: 1.题目: 2.解题思路和步骤: 只要知道反函数求导等于原函数的导数的倒数,那就很好求解了,这不过要先处理好x和y的对应关系,知…

本地套接字通信

本地套接字(Unix域套接字)是用于在同一台机器上的进程之间进行通信的一种方式。它不涉及网络协议,而是直接在文件系统中创建一个套接字文件,进程可以通过该文件进行通信。 本地套接字的作用:本地的进程间通信 有关系的…

语音AI小夜灯项目

一、项目简介 使用ESP32-S3N8R8模块作为主控芯片,S3内核增加了用于加速神经网络计算和信号处理等的指令,这使得我们可以使用它来快速解析训练好的语音模型进行语音识别的功能。 二、原理解析 本项目由四个部分组成,电源部分、LED照明部分、…

uniapp二维码有效期倒计时三分钟的效果是实现

需求&#xff1a; 会员码时效只有3分钟有效期&#xff0c;需要在页面倒计时3分钟&#xff0c;没有长按保存的效果实现 效果&#xff1a; 代码&#xff1a; <templete> <view> <uni-list> <view class"custom-list-item" click"onCode(c…

java代码规范(适合写程序之前先了解有助于开发协同)

目录 一、类定义 二、方法定义 三、接口定义 四、变量定义 1、命名规范&#xff1a; 2、类型规范&#xff1a; 3、常量规范&#xff1a; 五、static关键字 1、静态变量&#xff08;类变量&#xff09;&#xff1a; 2、静态方法&#xff08;类方法&#xff09;&#x…

AUTOSAR软件手册文档缩写描述,AUTOSAR_TR_PredefinedNames

由于AUTOSAR文档中的缩写太多&#xff0c;入门者看起开不方便。例如TR、SWS、SRS、EXP模块。 下载链接&#xff1a;https://www.autosar.org/fileadmin/standards/R21-11/FO/AUTOSAR_TR_PredefinedNames.pdf

android——自定义TextView

效果展示&#xff1a; 代码解析&#xff1a; 1、首先设置自定义属性&#xff08;res/values下新建一个attrs.xml文件&#xff09; <?xml version"1.0" encoding"utf-8"?> <resources><!-- name 自定义view的名字 CustomTextView--&…

Spring Bean的生命周期(钩子函数)

借鉴&#xff1a;https://www.cnblogs.com/liweimingbk/p/17843970.html https://blog.csdn.net/lxz352907839/article/details/128634404 一、Spring Bean生命周期 如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口&#xff0c;那么在加载Spring配置文…

Flood Fill算法总结

算法思想 从一个起点开始&#xff0c;每一次随机选择一个新加进来的格子&#xff0c;看一下它周围能否扩展新的格子。如果能扩展&#xff0c;那么就扩展进来&#xff0c;直到不能扩展新的格子为止。当然需要判重&#xff0c;同样一个格子只能覆盖一次&#xff0c;这样能够保证时…

DataLoader与Dataset

一、人民币二分类 二、DataLoader 与 Dataset DataLoader torch.utils.data.DataLoader 功能&#xff1a;构建可迭代的数据装载器 &#xff08;只标注了较为重要的&#xff09; • dataset: Dataset类&#xff0c;决定数据从哪读取及如何读取 • batchsize : 批大小 • num_…

机器学习异常值处理 逻辑汇总一

一 清除数据中恒定不变值 如果某个数据长时间不变&#xff0c;默认异常&#xff0c;清除掉该部分数据&#xff1a; # 使用 shift 和 cumsum 来创建一个分组键&#xff0c;每次值改变都会增加组号 g (df[沉淀池3号进水流量] ! df[沉淀池3号进水流量].shift()).cumsum()# 使用…

案例253:基于微信小程序的懂球短视频管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SpringBoot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder …