Python + Selenium + UnitTest自动化测试面试题目整理
1、如何使用Selenium进行自动化测试 ?
结合Python + Selenium + UnitTest
2、自动化测试框架
分层+PO模式:
包含基础封装层BasePage、PO页面对象层、TestCase测试用例层
日志处理模块、ini配置文件读取模块、数据驱动模块、jenkins持续集成
3、自动化测试流程
1)、编写自动化测试计划2)、设计自动化测试用例3)、编写自动化测试框架和脚本4)、调试并维护脚本5)、无人值守测试6)、后期脚本维护(添加用例、开发新功能)
4、在测试中遇到的问题描述
1、元素定位问题:1、浏览器滑动需要调用js实现;2、非select属性的下拉框使用Xpath方式定位;
2、频繁的变更页面,需要修改页面对象的脚本;
3、自动化测试偶尔出现过误报;
5、自动化测试用例编写
以基本业务流程为主
6、遇到问题如何解决?
1、思考2、百度3、请教
7、自动化测试发现的Bug
不多:在进行自动化测试前项目已经稳定,主要是保证已经测试通过的功能在新版本更新后没有问题
8、自动化测试的价值
代替大量繁琐的回归测试工作,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新
导致之前稳定下来的功能出现BUG
9、自动化测试中有误报Bug
有过:自动化测试报告中出现Bug,但实际上手工复测时Bug又无法复现,一般原因:1)、元素定位不稳定,需要尽量提高脚本的稳定性2)、开发更新了页面但是测试没有及时更新维护
10、在自动化测试中,主要完成哪些测试
冒烟测试、回归测试:回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间
11、在执行脚本过程,如何实现当前元素高亮显示
利用javaScript去修改当前元素的边框样式来到达高亮显示的效果
12、Selenium的工作原理
脚本启动driver,然后启动浏览器作为远程服务器,执行脚本发送请求,服务器解析请求作出相应的操作,反馈给客户端(脚本)
13、常见的定位方式?
id、name、tagName、classname、linkText、PatrilLinkText、Xpath、Cssselector
常用Xpath、轴定位
14、如果一个元素无法定位,考虑因素
1)、页面加载过慢,需要添加等待时间2)、页面包含iframe框架3)、元素为动态元素,需要通过父节点/兄弟节点定位4)、元素不能操作:判断元素是否可用、是否可见
15、遇到frame框架页面处理方式
先用driver.switch_to.frame()跳转进去frame(可自行封装:id/Xpath)
操作页面元素
操作完后使用driver.swith_to.default_content()跳转出来
16、遇到alert弹出窗处理方式
使用driver.switch_to.alert方法先跳转到alert弹出窗口
通过accept点击确定;通过dismiss点击取消;通过text()获得弹出窗口的文本
17、多窗口处理方式
比如:点击一个链接,在新的Tab页面打开,接下来需要在tab打开的页面查找元素1)、点击链接前使用driver.current_window_handle获得当前窗口句柄2)、再点击链接:通过driver.window_handles获得所有窗口的句柄3)、再循环找到新窗口的句柄:通过driver.switch_to.window()方法跳转到新的窗口
18、验证元素enable/disabled/checked状态
Python内置方法:isEnabled(),isSelected(),isDisplayed()方法判断
19、下来菜单的处理方式
Selenium中Select类:1)、定位元素2)、把定位的元素转化成Select对象3)、通过下标或者文本选中下拉框sel.select_by_index(index);sel.select_by_value(value);sel.select_by_visible_text(text);
20、日历控件
文本输入框:可直接通过sendKeys()方法来实现传入一个时间的数据
21、遇到过的异常情况
常见的selenium异常:1)、NoSuchElementException:表示没有该元素2)、TimeoutException :超时异常3)、ElementNotVisibleException :元素不可见4)、NoSuchAttributeException :没有该属性5)、NoSuchFrameException :没有该frame
22、上传图片的几种方式?
1、sendkeys
2、AutoIT工具
3、模拟按键
input属性:input属性且且type="file",直接使用send_keys()方法
非input属性:借助Python中win32api,win32con模拟按键输入
23、处理动态元素定位?
xpath或者css通过同级、父级、子级进行定位
24、自动化测试用例怎么来?
一般来源于冒烟测试
25、自动化测试的目的
1、用来回归
2、用来监控系统稳定性
3、提高工作效率
26、如何判断case是否通过?
断言、与预期结果比较
27、你项目中有多少case,通过率怎么样?
按实际回答,上千个,一般是70-80%左右
28、失败截图的原理是什么?
Webdriver自带截图功能,get_screenshot_as_file(),save_screenshot()
29、测试报告
报告由测试用例执行情况,将执行结果通过HTMLtestrunner类以HTML的形式形成测试报告
30、如何判断元素是否存在?
isElementPresent
31、自动化测试的时候是不是需要连接数据库做数据校验?
1、UI自动化不需要
2、接口测试会需要
32、在关闭浏览器时close和quit的区别
都可以实现退出浏览器session功能:
close是关闭当前聚焦的tab页面
quit是关闭全部浏览器tab页面,并退出浏览器session
33、自动化中有哪三类等待方式?
1.线程等待(强制等待)如time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。
2.imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。
3.WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码
34、什么是PO模式,为什么要使用它?
PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,
页面的元素和元素之间操作方法就是页面对象的属性和行为,PO模式一般使用三层架构,
分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。
35、脚本对于不容浏览器的兼容问题
可以在在IE,火狐和谷歌这三种浏览器上运行:实现的思路是封装一个方法,分别传入一个浏览器的字符串,
如果传入IE就使用IE,如果传入FireFox就使用FireFox,如果传入Chrome就使用Chrome浏览器,
使用什么浏览器可以在总的ini配置文件中进行配置
36、PO模式的介绍
PO是Page Object模式的简称,它是一种设计思想。把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为。
PO模式一般使用三层架构,分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。
设计思想是把元素定位与元素操作进行分层,优点是当元素发生变化时,只需要维护page层的元素定位,而不需要关心在哪些用例中使用了这些元素。
在编写用例时,也不需要关系元素是如何定位的。
Python + Selenium + UnitTest自动化测试面试题目整理相关推荐
- python+selenium+unittest自动化测试框架
前言 关于自动化测试的介绍,网上已有很多资料,这里不再赘述,UI自动化测试是自动化测试的一种,也是测试金字塔最上面的一层,selenium是应用于web的自动化测试工具,支持多平台.多浏览器.多语言来 ...
- 软件测试案例|Python+Selenium+unittest完成对登录页面的自动化测试
软件测试案例:Python+Selenium+unittest完成对登录页面的自动化测试 01.实验简介 本实验使用Python语言结合Selenium UI测试工具,利用unittest组织测试用例 ...
- 关于python+selenium的自动化测试需要用到的知识点总结
关于python+selenium的自动化测试需要用到的知识点总结 自己总结的python+selenium自动化测试的知识点, ***基础使用的整合案例:在第十六条与第十八条 *** # codin ...
- 【面试】网易游戏面试题目整理及答案(5)
网易游戏面试题目整理及答案(5) 算法 操作系统 Linux部分 其他 参考资料 算法 Leetcode 75题:请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 1)每一行 ...
- 【面试】网易游戏面试题目整理及答案(1)
网易游戏面试题目整理及题目(1) Python部分 计算机网络 参考资料 Python部分 迭代器生成器,生成器是如何实现迭代的? 答:迭代器iterator:迭代器就是实现了迭代方式的容器,iter ...
- 各公司 Java 面试题目整理(基础+高级+算法+数据库)
包含 Java 面试的各个方面,史上最全,苦心整理最全 Java 各公司面试题目整理包括但不限于基础+高级+算法+数据库优化+算法优化,使用层面广,知识量大,涉及你的知识盲点.要想在面试者中出类拔萃就 ...
- 【面试】网易游戏面试题目整理及答案(3)
网易游戏面试题目整理及答案(3) 数据库部分 MySQL 事务 MySQL锁机制 MySQL调优 MySQL分区.分表.分库 主从复制 其他问题 数据库部分 MySQL 事务 事务的隔离级别有哪些?M ...
- 嵌入式软件工程师面试题目整理(一)
文章目录 嵌入式软件工程师面试题目整理(一) Arm有多少32位寄存器? Arm2440和6410有什么区别 CPU,MPU,MCU,SOC,SOPC联系与差别 上拉&下拉&高阻态 串 ...
- 【面试题】某司社招面试题目整理及答案
某司社招面试题目整理及答案 Java基础部分 HashMap的实现原理 如何解决Hash碰撞 HashMap的存储(hash算法.hash冲突.初始化.扩容) HashMap和HashTable的区别 ...
最新文章
- C++ 面试题:子类与父类同名变量
- sourcetree 回滚
- 盘点VS2015 预览版的5个新特性
- question regarding UI configuration type
- JS原生方法实现jQuery的ready()
- “解救”外卖骑手,美团首次公开算法规则!
- mysql从盘延迟_Mysql-主从延迟解决方法
- C/C++—— #include“stdafx.h”详解
- CopyTranslator(复译)-外文辅助阅读翻译解决方案
- c#读取csv文件成DataTable,将DataTable数据存储为csv格式文件
- IE11浏览器清空缓存
- C语言 execve()函数使用方法
- html盒子浮动分栏,DIV浮动定位实现CSS分栏布局
- Kindle for Android打开本地mobi文件
- cardboardSDK VR开发srcollview溢出解决。
- 高级计算机工程师查询,高级工程师证书查询网站
- aliyun cloud ide
- python 贪吃蛇大作战_Python实现贪吃蛇大作战
- 从自身谈在成熟与幼稚公司做测试的差别
- Quartus II与ModelSim联合仿真