Python+Selenium+UnitTest自动化测试面试题目整理
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()⽅法来实现传⼊⼀个时间的数据大富翁8
21、遇到过的异常情况
常见的selenium异常:
1)、NoSuchElementException:表⽰没有该元素
2)、TimeoutException :超时异常
3)、ElementNotVisibleException :元素不可见
4)、NoSuchAttributeException :没有该属性
5)、NoSuchFrameException :没有该frame
22、上传图⽚的⼏种⽅式?
1、sendkeys
birth2、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层的元素定位,⽽不需要关⼼在哪些⽤例中使⽤了这些元素。在编写⽤例时,也不需要关系元素是如何定位的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。