自动化面试题记录整理(部分答案自己整理)
1、selenium中如何判断元素是否存在?
没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断。
2、selenium中hidden或者是display = none的元素是否可以定位到?
不可以,想点击的话,可以用js去掉dispalay=none的属性。
3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
4、如何提高selenium脚本的执行速度?
5、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
6、如何设计高质量自动化脚本
7、你的自动化用例的执行策略是什么?
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设计模式?
18、怎样去选择一个下拉框中的value=xx的option?
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 的区别?
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
使用GET请求时,传输数据会受到URL长度的限制。
对于POST,理论上是不会受限制的