1、selenium中如何判断元素是否存在?
答:isElementPresent。
2、selenium中hidden或者是display=none的元素是否可以定位到?
答:
可以:定位是可以定位到的,但是不能操作,可以判断元素is_displayed()想点击的话,可以用js去掉dispalay=none的属性;
不能:可以写JavaScript将标签中的hidden先改为0,再定位元素。两个答案都算对,说明出原因即可。
3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
答:添加元素智能等待时间driver.implicitly_wait(30)添加强制等待时间(比如python中写sleep)try方式进行id,name,clas,xpath,cssSelector不同方式进行定位,如果第一种失败可以自动尝试第二种。
4、如何提高selenium脚本的执行速度?
答:
少用sleep,尽量不用implicitly_wait;
多用显式等待方法;
弄个性能好的电脑具体(看个人思路)。
5、你的自动化用例的执行策略是什么?
答:自动化测试与软件开发本质上是一样的,利用自动化测试工具,经过测试需求分析,设计出自动化测试用例,从而搭建自动化测试的框架,设计与编写自动化脚本,验证测试脚本的正确性,最终完成自动化测试测试脚本(即主要功能为测试的应用软件)并输出测试结果。
6、什么是持续集成?
答:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。
每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
7、自动化测试的时候是不是需要连接数据库做数据校验?
答:一般来说
UI自动化不需要(很少需要);
接口测试会需要:从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确。
8、有几种元素常用定位方式,分别是?你最偏爱哪一种,为什么?
答:8种:id、name、classname、tagname、linktext、partiallinktext、xpath、cssSelector偏爱哪一种?
答:xpath、css几乎所有的元素都可以定位到,但是它们的短处在于页面上更改了元素后位置很容易改变,且xpath语法长,定位慢,还不稳定;css语法简洁,定位快,瑕不掩瑜,所以首先使用的还是id或者name、css等。
9、如何去定位页面上动态加载的元素?
答:
触发动态加载元素的事件,直至动态元素出现,进行定位;
WebDriverWait()方法循环去查询是否元素加载出来了。
10、如何去定位属性动态变化的元素?
答:xpath或者css通过同级、父级、子级进行定位点击链接以后,selenium是否需要自动等待该页面加载完毕?
答:需要。
11、webdriverclient的原理是什么?
答:SeleniumRC的原理是当浏览器启动时,向其中注入Javascript,从而使这些JS来驱动浏览器中的AUT(ApplicationUnderTest)而SeleniumWebdriver是通过调用浏览器原生的自动化API直接驱动浏览器。
12、什么是pageobject设计模式?
答:简单来说,就是把页面作为对象,在使用中传递页面对象,来使用页面对象中相应的成员或者方法,能更好的体现面向对象语言(比如java或者python)的面向对象和封装特性。
13、什么是断言(assert),常用断言方法,UI自动化中断言方式?
答:断言的英文是assertion,断言检查的英文是assertionchecking。
断言是指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件。
UI自动化中断言方式:定位页面当前页面或跳转页面中元素唯一的一个或多个元素判断是否存在,即可。
14、你觉得自动化测试最大的缺陷是什么?
答:不稳定、可靠性、不易维护、成本与收益。
15、什么是分层测试?
答:行业里面提的一般是金字塔的分层模型:UI测试、集成/接口测试、单元测试。