自动化测试面试追命十问
文章目录
- 前言
- 一、UI测试过程中,怎么判断元素是否存在?
- 二、selenium 中 hidden 或者是 display = none 的元素是否可以定位到?
- 三、 selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点 击的?
- 四、 如何去定位页面上动态加载的元素?
- 五、如何去定位属性动态变化的元素?
- 六、点击链接以后,selenium 是否会自动等待该页面加载完毕?
- 七、自动化测试的时候是否需要连接数据库做数据校验?
- 八、有几种元素常用定位方式,分别是?你最偏爱哪一种,为什么?
- 九、怎么提高 selenium 脚本的自动化执行效率?
- 十、用例在运行过程中经常会出现不稳定的情况,也就是这次可以通过,下次无 法通过了, 如何提高用例的稳定性?
- 总结
前言
本文是笔者面试过程中,遇到常问自动化测试问题,俗称追命20问,废话比不多说,直接上干货。
`
一、UI测试过程中,怎么判断元素是否存在?
判断元素是否存在和是否出现不同,判断是否存在意味着如果这个元素压根就不存在,就会 抛出
NoSuchElementException 这样就可以使用 try catch,如果 catch 到 NoSuchElementException 就返回
false。通常在项 目中会把这个功能封装在 isElementPresent 方法中
二、selenium 中 hidden 或者是 display = none 的元素是否可以定位到?
不能,想点击的话,可以用 js 去掉 dispalay=none 的属性。
三、 selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点 击的?
1.通过封装 find 方法实现 waitforEmelentPresent,这样在对元素进行操作之前保证元素被 找到,进而提高成功率
2.在对元素操作之前,比如 click,如果该元素未 display(非 hidden),就需要先滚动到该 元素,然后进行 click 操作;为啥使用滚动? 因为如果页面没有完全显示,element 如果是 在下拉之后才能显示出来,只能先滚动到该元素才能进行 click,否则是不能 click 操作
3.不同方式进行定位,与 expectedConditions 判断方法封装,循环判断页面元素出现后再操 作;
4.开发人员规范开发习惯,如给页面元素加上唯一的 name,id 等。
四、 如何去定位页面上动态加载的元素?
触发动态事件,然后 findElemnt 如果是动态菜单,需要一级一级 find(JS 实现)
五、如何去定位属性动态变化的元素?
属性动态变化是指该 element 没有固定的属性值,所以只能通过相对位置定位比如通过 xpath 的轴,
parent/following-sibling/precent-sibling 等 另外也可以尝试 findbyelements 遍历
六、点击链接以后,selenium 是否会自动等待该页面加载完毕?
不会的。所以有的时候,当 selenium 并未加载完一个页面时再请求页面资源,则会误报不
存在此元素。所以首先我们应该考虑判断,selenium 是否加载完此页面。其次再通过函数 查找该元素。
七、自动化测试的时候是否需要连接数据库做数据校验?
一般来说 1、 UI 自动化不需要(很少需要);2、接口测试会需要:从数据库层面来进行数 据校验可以
更方便验证系统的数据处理方面是否正确;
八、有几种元素常用定位方式,分别是?你最偏爱哪一种,为什么?
8 种:id、name、class name、tag name、link text、partial link text、xpath、css selector 偏爱哪一
种?答: 我最常用的是 xpath(或 CssSelector)因为很多情况下,html 标签的属性不够规范,无法 通
过单一的属性定位,这个时候就只能使用 xpath 可以去重实现定位唯一 element 事实上定位最快的是
Id,因为 id 是唯一的,然而大多数开发并没有设置 id
九、怎么提高 selenium 脚本的自动化执行效率?
1.优化测试用例,尽可不使用 sleep,减少使用 ImplicitlyWait
2.多使用 selenium 的 WebDriverWait/FluentWait,这样可以优化等待时间
3.减少不必要的操作步骤,如经过三四步才能打开我们要测试的页面的话,我们就可以直接 通过 网址来打开,减少不必要的操作。
4.中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的 内容 不影响我们测试,就设置超时时间,中断页面加载。
十、用例在运行过程中经常会出现不稳定的情况,也就是这次可以通过,下次无 法通过了, 如何提高用例的稳定性?
1、查找元素前先做判断:ExpectedConditions 里面的各种方法;
2、显式等待:多使用 WebDriverWait,加上显式等待时间,等要操作的元素出现之后再执 行下面的操作;适当的使用 sleep 作为辅助等待。
3、多用 try catch 捕获异常;
4、多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;
5、尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。
6、使用重试机制,在失败时重运行
总结
例如:以上简单的10问,是在UI测试过程中常见所遇到的问题,并不是简单刻板的回答,常常会引发面
试官在实际项目中的连环追问,所以,一定切合实际项目,综合比较给出合适答案。关注我,不迷路,
继续安排面试10问。
自动化测试面试追命十问相关推荐
- mysql业务繁忙时能建索引吗_MySQL DBA面试高频三十问
原标题:MySQL DBA面试高频三十问 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际 ...
- 面试官十大常问面试问题总结
面试时,有几个问题是面试人员常常会提出的,针对这些问题好好准备,在面试时也就不会哑口无言,无言以对了,现在找工作,得面试.面试技巧也是一大学问,面试的功夫做到家了,找工作很容易的.下面就面试官十大常问 ...
- 自动化测试面试100问
自动化测试面试100问 基于python+Selenium+Unittest+BeatifulReport框架实现 1.等待相关 1)隐式等待:imlpicitlyWait:webdriver 会在指 ...
- MySQL面试知识点追命连环问(一)执行流程存储引擎查询缓存
来了,朋友们,追命连环问系列之MySQL部分开始了.准备好了吗?本次连环问主要设计以下四个方面: MySQL执行流程 MySQL存储引擎 表字段如何设计 查询缓存 一,MySQL的执行流程 面试官: ...
- mysql添加二级索引的sql语句_MySQL面试知识点追命连环问(二)事务、索引及SQL优化...
目录 上次我们讨论了MySQL的运行流程及原理,字段设计,存储引擎和查询缓存. 这次我们继续来追命连环问关于事务,索引,SQL优化等相关的内容.准备好了吗?事务 索引 SQL优化 常见问题 1. M ...
- MySQL面试知识点追命连环问(三)锁机制、日志备份及分表策略
上次我们讨论了MySQL的事务索引,SQL优化和处理器. MySQL面试知识点追命连环问(二)事务.索引及SQL优化 这次我们继续来追命连环问关于MySQL锁机制,日志备份和扩展性等相关的内容. 锁 ...
- 四万字+五十图,三五十问拿捏Spring面试
有人说,"Java程序员都是Spring程序员",老三不太赞成这个观点,但是这也可以看出Spring在Java世界里举足轻重的作用. 基础 1.Spring是什么?特性?有哪些模块 ...
- 金九银十!阿里面试官告诉你面试Java后端开发面试会被问到什么问题?面试稳了!
前言 面试java后端开发,基本上会问你一些理论基础,以及你对一些技术点的理解,或者说深一点问一问你所掌握的深浅如何? 如果之前有实习经验,还会问一些你做过的项目,以及你在其中担任的角色,就是说你负责 ...
- CSS十问——好奇心+刨根问底=CSSer (转)
最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问底的劲头,而不是复制粘贴,得过且过.本人能力有限 ...
最新文章
- 多个div嵌套,获取鼠标所点击的div对象
- 当有键盘时如何在开始编辑时使UITextField向上移动?
- java 斗地主桌号_求用java编写的斗地主程序就,要求可以在局域网内实现两桌以上同时玩。...
- for循环java_java的这三种for循环有什么区别?
- HDU Senior's Gun (水题)
- 超微服务器双路主板系列,巨无霸核心!超微发布X12DPL系列服务器主板
- 基础学习 Linux命令
- Entity Framework使用Sqlite时的一些配置
- protobuf编码原理及其在schema格式转换的应用
- 系统crontab指令
- VC2013 配置属性
- SwitchHosts for Mac(mac hosts修改工具)
- SpringCloud 入门级别教程,初学者专用,有netiflex原版教程,更有SpringCloudAlibaba微服务教程
- 申报表计算机代码是什么,金税盘的维护费在申报表上面有一个要填写减免性质代码怎么填啊 ?那个代码是什么呢?...
- 人机工程学座椅设计_人体工程学与座椅设计.ppt
- Linux常用命令分享
- 大连英语培训百家外语雅思考试词汇量要求与记忆方法是什么
- 有了神经网络,带汤姆实时追踪杰瑞
- 抖音高贵气质的签名_抖音2100万赞!95后小伙“乡村维密秀”走红外媒:人生道阻且长,有梦想,谁都了不起...
- python3安装完,出现 No module named '_ssl',解决方案
热门文章
- 弹幕播放器【在项目中对弹幕播放器一些零碎的整理】
- 卜若的代码笔记-一周速通LayaAir-第二章:获取组件
- 测绘人必备的三维地图工具,功能超级实用!
- css实现文字占两行
- php 游戏数据 处理,PhpSpider采集游戏的新闻数据
- GOOGLE 云端硬盘
- 【OpenMMLab AI训练营第二期】Class6:目标检测与MMDetection
- 初次联系导师短信模板_【干货分享】联系导师时应该注意什么?
- python硬件编程_树莓派c语言 设置并使用树莓派进行Python和C语言编程 - 硬件设备 - 服务器之家...
- 91-----100