文章目录

  • 前言
  • 一、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. 1_HelloWorld
  2. gcc对C语言的扩展:局部标签声明(Locally Declared Labels)
  3. 八大排序算法的Python实现
  4. 我们去的地方一定会有屎
  5. 不想“被out”?来看看现在的开发者都在做什么
  6. 【SQL注入16】SQL漏洞利用之读写文件
  7. 算法——排序——归并排序图解动画
  8. 传统3D游戏引擎的Web化
  9. bootloader recovery
  10. MCU的GPIO输出模式Open Drain Push/Pull的理解
  11. vue+element 压缩上传图片
  12. mysql取分组最新的一条_mysql group by之后取每个分组最新的一条
  13. 店宝宝:巨头PK精品电商
  14. 微信公众号消息模板发送
  15. Win 10 + VMware Workstation Pro15 + Ubuntu 18.04 虚拟机安装教程
  16. ckfinder 2.3 破解
  17. 静态成员和非静态成员的区别
  18. Arduino学习笔记 类比信号,可变电阻
  19. 国际运营商物联网布局及启示
  20. 史上最简单的 MySQL 教程(二)「关系型数据库」

热门文章

  1. java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中
  2. 从零开始学Android (1)
  3. 用HTML设计一个课程表
  4. springboot-mybatisplus-redis二级缓存
  5. vivado2017生成mcs文件办法
  6. 行转列方法 及 pivot函数使用问题
  7. 中国航天日,主题是“格物致知,叩问苍穹”
  8. 情人节 我用Python表白
  9. 运用Javascript实现时间重置、进行时间加减计算
  10. OA 系统工作流引擎 Camunda 实践(1)