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层的元素定位,而不需要关心在哪些用例中使用了这些元素。
在编写用例时,也不需要关系元素是如何定位的。

你可能感兴趣的:(自动化测试相关,selenium,面试,自动化,软件测试)