文章目录

  • 前言
  • 一、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问。

自动化测试面试追命十问相关推荐

  1. mysql业务繁忙时能建索引吗_MySQL DBA面试高频三十问

    原标题:MySQL DBA面试高频三十问 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际 ...

  2. 面试官十大常问面试问题总结

    面试时,有几个问题是面试人员常常会提出的,针对这些问题好好准备,在面试时也就不会哑口无言,无言以对了,现在找工作,得面试.面试技巧也是一大学问,面试的功夫做到家了,找工作很容易的.下面就面试官十大常问 ...

  3. 自动化测试面试100问

    自动化测试面试100问 基于python+Selenium+Unittest+BeatifulReport框架实现 1.等待相关 1)隐式等待:imlpicitlyWait:webdriver 会在指 ...

  4. MySQL面试知识点追命连环问(一)执行流程存储引擎查询缓存

    ​来了,朋友们,追命连环问系列之MySQL部分开始了.准备好了吗?本次连环问主要设计以下四个方面: MySQL执行流程 MySQL存储引擎 表字段如何设计 查询缓存 一,MySQL的执行流程 面试官: ...

  5. mysql添加二级索引的sql语句_MySQL面试知识点追命连环问(二)事务、索引及SQL优化...

    目录 ​上次我们讨论了MySQL的运行流程及原理,字段设计,存储引擎和查询缓存. 这次我们继续来追命连环问关于事务,索引,SQL优化等相关的内容.准备好了吗?事务 索引 SQL优化 常见问题 1. M ...

  6. MySQL面试知识点追命连环问(三)锁机制、日志备份及分表策略

    ​上次我们讨论了MySQL的事务索引,SQL优化和处理器. MySQL面试知识点追命连环问(二)事务.索引及SQL优化 这次我们继续来追命连环问关于MySQL锁机制,日志备份和扩展性等相关的内容. 锁 ...

  7. 四万字+五十图,三五十问拿捏Spring面试

    有人说,"Java程序员都是Spring程序员",老三不太赞成这个观点,但是这也可以看出Spring在Java世界里举足轻重的作用. 基础 1.Spring是什么?特性?有哪些模块 ...

  8. 金九银十!阿里面试官告诉你面试Java后端开发面试会被问到什么问题?面试稳了!

    前言 面试java后端开发,基本上会问你一些理论基础,以及你对一些技术点的理解,或者说深一点问一问你所掌握的深浅如何? 如果之前有实习经验,还会问一些你做过的项目,以及你在其中担任的角色,就是说你负责 ...

  9. CSS十问——好奇心+刨根问底=CSSer (转)

    最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问底的劲头,而不是复制粘贴,得过且过.本人能力有限 ...

最新文章

  1. 多个div嵌套,获取鼠标所点击的div对象
  2. 当有键盘时如何在开始编辑时使UITextField向上移动?
  3. java 斗地主桌号_求用java编写的斗地主程序就,要求可以在局域网内实现两桌以上同时玩。...
  4. for循环java_java的这三种for循环有什么区别?
  5. HDU Senior's Gun (水题)
  6. 超微服务器双路主板系列,巨无霸核心!超微发布X12DPL系列服务器主板
  7. 基础学习 Linux命令
  8. Entity Framework使用Sqlite时的一些配置
  9. protobuf编码原理及其在schema格式转换的应用
  10. 系统crontab指令
  11. VC2013 配置属性
  12. SwitchHosts for Mac(mac hosts修改工具)
  13. SpringCloud 入门级别教程,初学者专用,有netiflex原版教程,更有SpringCloudAlibaba微服务教程
  14. 申报表计算机代码是什么,金税盘的维护费在申报表上面有一个要填写减免性质代码怎么填啊 ?那个代码是什么呢?...
  15. 人机工程学座椅设计_人体工程学与座椅设计.ppt
  16. Linux常用命令分享
  17. 大连英语培训百家外语雅思考试词汇量要求与记忆方法是什么
  18. 有了神经网络,带汤姆实时追踪杰瑞
  19. 抖音高贵气质的签名_抖音2100万赞!95后小伙“乡村维密秀”走红外媒:人生道阻且长,有梦想,谁都了不起...
  20. python3安装完,出现 No module named '_ssl',解决方案

热门文章

  1. 弹幕播放器【在项目中对弹幕播放器一些零碎的整理】
  2. 卜若的代码笔记-一周速通LayaAir-第二章:获取组件
  3. 测绘人必备的三维地图工具,功能超级实用!
  4. css实现文字占两行
  5. php 游戏数据 处理,PhpSpider采集游戏的新闻数据
  6. GOOGLE 云端硬盘
  7. 【OpenMMLab AI训练营第二期】Class6:目标检测与MMDetection
  8. 初次联系导师短信模板_【干货分享】联系导师时应该注意什么?
  9. python硬件编程_树莓派c语言 设置并使用树莓派进行Python和C语言编程 - 硬件设备 - 服务器之家...
  10. 91-----100