UI⾃动化测试⾯试题及答案⼤全(1)
⾃动化测试⾯试题及答案⼤全(1)
原创测试喵最后发布于2019-04-18 09:11:58 阅读数 3284 收藏
展开
⾃动化⾯试题记录整理(部分答案⾃⼰整理)
selenium中如何判断元素是否存在?
没有提供原⽣的⽅法判断元素是否存在,⼀般我们可以通过定位元素+异常捕获的⽅式判断
selenium中hidden或者是display = none的元素是否可以定位到?
不可以,想点击的话,可以⽤js去掉dispalay=none的属性
selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素⼀定是可以点击的?
1.⾸先通过封装find⽅法,实现wait_for_element_ispresent(WebDriverWait)
2.在对页⾯进⾏click之前,先滚动到该元素(通过Js封装),避免在页⾯未加载完成前或是在下拉之后才能显⽰。
3.不同⽅式进⾏定位,与expected_conditions判断⽅法封装,循环判断页⾯元素出现后再操作;
4.开发⼈员规范开发习惯,如给页⾯元素加上唯⼀的name,id等。
如何提⾼selenium脚本的执⾏速度?
1.优化测试⽤例。设置等待时间的时候,少⽤sleep,尽量不⽤implicitly_wait,多⽤显式等待⽅法;
2.减少不必要的操作步骤。如经过三四步才能打开要测试的页⾯的话,可以直接通过⽹址来打开;
3.中断页⾯加载。如果加载的内容不影响我们测试,就设置超时时间,中断页⾯加载;
4.使⽤Selenium grid,通过testNG实现并发执⾏。在编写测试⽤例的时候,实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运⾏。
⽤例在运⾏过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升⽤例的稳定性?
1.在经常检测失败的元素前尽量加上显式等待时间,等要操作的元素出现之后再执⾏下⾯的操作;
2.多线程的时候,减少测试⽤例耦合度,因为多线程的执⾏顺序是不受控制的;
3.多⽤ try 捕捉,处理异常;
4.尽量使⽤测试专⽤环境,避免其他类型的测试同时进⾏,对数据造成⼲扰。
如何设计⾼质量⾃动化脚本
1.使⽤四层结构实现业务逻辑、脚本、数据分离。
2.使⽤PO设计模式,将⼀个页⾯⽤到的元素和操作步骤封装在⼀个页⾯类中。如果⼀个元素定位发⽣了改变,我们只⽤修改这个页⾯的元素属性
3.对于页⾯类的⽅法,我们尽量从客户的正向逻辑去分析,⽅法中是⼀个独⽴场景,例如:登录到退出,⽽且不要想着把所有的步骤都封装在⼀个⽅法中。
4 测试⽤例设计中,减少测试⽤例之间的耦合度。
你的⾃动化⽤例的执⾏策略是什么?
1.⾃动化测试⽤例是⽤来监控的。集成到jenkins,创建定时任务定时执⾏;
2.有些⽤例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执⾏;
3.有些⽤例不需要经常执⾏。jenkins创建⼀个任务,需要执⾏的时候⼈⼯构建即可。
什么是持续集成?
频繁的将代码集成到主⼲,持续性的进⾏项⽬的构架,以便能能够快速发现错误,防⽌分⽀⼤幅度偏离主⼲
⾃动化测试的时候是不是需要连接数据库做数据校验?
UI⾃动化不需要
接⼝测试会需要
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更快。
如何去定位页⾯上动态加载的元素?
⾸先触发动态事件,然后再定位。如果是动态菜单,则需要层级定位。——JS实现(对动态事件封装)
如何去定位属性动态变化的元素?
先去该元素不变的属性,要是都变,那就不变的⽗元素,⽤层级定位(以不变应万变)
属性动态变化也就是指该元素没有固定的属性值,可以通过:
JS实现,
通过相对位置来定位,⽐如xpath的轴,paren/following-sibling/percent-sibling
wwwblogs/zhaozhan/archive/2009/09/10/1564332.html
点击链接以后,selenium是否会⾃动等待该页⾯加载完毕?
不会的。所以有的时候,当selenium并未加载完⼀个页⾯时再请求页⾯资源,则会误报不存在此元素。所以⾸先我们应该考虑判
断,selenium是否加载完此页⾯。其次再通过函数查该元素。
webdriver client的原理是什么?
在selenium启动以后,driver充当了服务器的⾓⾊,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执⾏相应的操作,并把执⾏结果返回给client.
webdriver的协议是什么?
WebDrive协议本⾝是http协议,数据传输使⽤json
启动浏览器的时候⽤到的是哪个webdriver协议?
-http
什么是page object设计模式?
1.通俗来讲,把每个页⾯当成⼀个页⾯对象,页⾯层写定位元素⽅法和页⾯操作⽅法
2.⽤例层从页⾯层调⽤操作⽅法,写成⽤例
3.可以做到定位元素与脚本的分离
怎样去选择⼀个下拉框中的value=xx的option?
1.select类⾥⾯提供的⽅法:select_by_value(“xxx”)
2.xpath的语法也可以定位到react面试题及答案2019
如何在定位元素后⾼亮元素(以调试为⽬的)?
-重置元素属性,给定位的元素加背景、边框
什么是断⾔和验证?
断⾔(assert):测试将会在检查失败时停⽌,并不运⾏后续的检查
优点:可以直截了当的看到检查是否通过
缺点:检查失败后,后续检查不会执⾏,⽆法收集那些检查结果状态
验证(vertify):将不会终⽌测试
缺点:你必须做更多的⼯作来检查测试结果:查看⽇志——>耗时多,所以更偏向于断⾔
page object设置模式中,是否需要在page⾥定位的⽅法中加上断⾔?
不需要,page页只做元素抓取和操作⽅法
page object设计模式中,如何实现页⾯的跳转?
初始化driver参数,Page类传driver参数
⾃动化测试⽤例从哪⾥来?
-
⼿⼯⽤例中抽取
你觉得⾃动化测试最⼤的缺陷是什么?
-不稳定
-可靠性不强
-不易维护
-成本与收益
什么是分层测试?
1.数据层
2.接⼝层’
3.UI层
webdriver可以⽤来做接⼝测试吗?
不可以,webdriver是专门做web的UI⾃动化参数
get和post 的区别?
1、GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数⽤&连接。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
2、传输数据的⼤⼩
使⽤GET请求时,传输数据会受到URL长度的限制。
对于POST,理论上是不会受限制的
3、安全性。POST的安全性⽐GET的⾼
————————————————
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论