selenium自动化面试题回答
1. 你们自动化测试,用的什么语言?什么工具?什么框架?
参考答案一:
我们做的是 Web UI 自动化,使用 selenium 自动化工具结合 unittest 框架来实现自动化测试,采用 python 脚本语言编写。
参考答案二:
我们是用 selenium 工具来实现自动化,采用 python 脚本语言,unittest 测试框架和PO模式搭建的UI自动化测试框架
2. 你们web自动化怎么做的?
参考答案:
1. 我们一般在 主流程测试 或 回归测试 的时候使用自动化测试;
2. 我们会先对需求进行评估,确定测试范围,然后从手工用例中就筛选出要实现自动化测试的用例;
3. 接着开始准备编写自动化测试脚本,我们的脚本是基于Python语言编写的,使用Unittest框架结合了PO思想搭建的UI自动化测试框架,用的自动化工具是 Selenium;
4. 根据搭建好的测试框架,我们会把页面中的公共方法封装到 common 中,把页面的业务逻辑代码放在page层,在 testcase层编写测试用例代码,在report 层存放测试报告;
5. 最后在主运行文件 run.py中,运行项目的自动化用例;
6. 脚本跑完后会生成 html 格式的自动化测试报告,打开报告看看有没有失败的,进行问题分析。
7. 比如,充值这个功能的脚本,我们是这样做的:在testcase层编写自动化用例代码,导入unittest框架,定义一个类继承TestCase类,在这个类里面开始编写测试用例,并在每条用例上加上断言,来判断用例执行是否符合预期,用例写好后,到运行文件中,将要执行的用例导过来执行,脚本执行完成后,到report中查看报告
3. 自动化测试怎么看报告的?
参考答案:
我们用的是第三方的HTMLTestRunner工具生成的测试报告,跑完脚本后,到report里面打开生成的报告,看看用例执行情况,重点看看有没有执行失败或者有异常的用例,如果有的话,点开详情,里面有报错日志,看看具体原因,还可以配合截图进行分析
4. selenium是怎么使用的?
参考答案:
Selenium是Web自动化工具,里面封装了大量操作浏览器的API,主要模拟人进行浏览器操作,Selenium是第三方库,要先安装Selenium自动化工具,再将Selenium导入到脚本中使用
那Selenium简单的使用方法是:
1. 导入自动化工具后,先实例化一个浏览器对象,后面的操作都会基于这个浏览器对象(即启动浏览器)
2. 通过浏览器对象访问页面
3. 打开页面后,进行页面操作,即通过浏览器对象调用元素定位方法进行元素定位并操作
4. 页面操作结束后,通过浏览器对象调用关闭方法,将浏览器关闭
5. setUp、tearDown、testa、testb的执行顺序是什么?
参考答案:
unittest框架下,每条用例执行之前会先执行setUp方法,每条用例执行之后会执行tearDown方法,有多条用例的情况下,用例的执行顺序是根据test后面字符的ASCII从小到大的顺序执行的,比如testa、testb,会先执行testa,所以setUp、tearDown、testa、testb的执行顺序是setUp→testa→tearDown→setUp→testb→tearDown
6. 你们在做自动化测试的时候,多窗口切换是怎么做的?
参考答案:
通过窗口句柄切换,先通过浏览器对象调用window_handles获取到所有窗口句柄,此时返回的数据类型是列表,可以通过下标获取到具体窗口的句柄,然后再通过switch_to.window(句柄)就可以切换到指定的窗口了
7. 说一下定位元素用什么方法?
参考答案:
元素定位一般有八大方式:
id、name、class_name、tag_name、link_text、partical_link_text、css、xpath
l id定位方式:根据元素的id属性定位的,一般情况下id属性值是唯一的,有id时用id定位
l name定位方式:根据元素的name属性定位的,name属性可以不唯一,用的时候识别下是不是可以作为识别这个元素的唯一特征;
l class_name定位方式:根据元素的class属性定位的,class属性值一般情况下都不唯一,用的少一点;
l tag_name定位方式:根据元素的标签定位的,很少使用,同名标签太多,只有元素特殊的时候会用;
l link_text定位方式:专门针对<a>标签定位的,是根据文本值进行精确匹配定位
l partical_link_text定位方式:专门针对<a>标签定位的,是根据文本值进行模糊匹配定位
l css定位方式:根据css层叠样式表的元素选择器定位的,一般情况下web项目,如果元素没有比较明显的特征,优先采用css定位,比xpath定位速度要快
l xpath定位方式:根据HTML中元素的路径定位的,如果其他方式定位不到,可以用这个方式定位,基本上元素用xpath都能定位到,定位策略很多,相比css定位速度会慢一点,如果没有性能要求,可以直接采用xpath方式定位
8. xpath定位到了,但是属性内容经常会变怎么办?
参考答案:
看看属性值的变化情况,如果值的一部分是固定的,只是其中一部分是变化的,比如id是随机生成的,但是有一部分值是固定的,而且这部分值可以唯一识别到这个元素,那么可以使用xpath的contains函数进行模糊匹配定位;如果属性值完全是随机的,没有规律,那么考虑换其他属性定位,如果其他属性也不能用,可以考虑用元素的关系定位,比如父子关系,想定位子元素,可以先找到父元素,再通过父元素定位到子元素,xpath和css都可以通过关系定位。
9. css定位策略有哪些?具体说一下
参考答案:
1、 id选择器:使用id属性值定位
2、 class选择器:使用class属性值定位
3、 元素选择器:使用标签名定位,不太建议使用,因为同名的元素很多
4、 属性选择器:使用元素的属性进行定位
5、 层级选择器 :结合上元素的关系定位,比如父子关系,想要定位子元素,可以先定位到父元素,然后再通过关系找到子元素
6、 css还可以使用元素属性进行模糊匹配定位(包含、以XX开始、以XX结束三种方式)