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自动化测试面试题目整理相关推荐

  1. python+selenium+unittest自动化测试框架

    前言 关于自动化测试的介绍,网上已有很多资料,这里不再赘述,UI自动化测试是自动化测试的一种,也是测试金字塔最上面的一层,selenium是应用于web的自动化测试工具,支持多平台.多浏览器.多语言来 ...

  2. 软件测试案例|Python+Selenium+unittest完成对登录页面的自动化测试

    软件测试案例:Python+Selenium+unittest完成对登录页面的自动化测试 01.实验简介 本实验使用Python语言结合Selenium UI测试工具,利用unittest组织测试用例 ...

  3. 关于python+selenium的自动化测试需要用到的知识点总结

    关于python+selenium的自动化测试需要用到的知识点总结 自己总结的python+selenium自动化测试的知识点, ***基础使用的整合案例:在第十六条与第十八条 *** # codin ...

  4. 【面试】网易游戏面试题目整理及答案(5)

    网易游戏面试题目整理及答案(5) 算法 操作系统 Linux部分 其他 参考资料 算法 Leetcode 75题:请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 1)每一行 ...

  5. 【面试】网易游戏面试题目整理及答案(1)

    网易游戏面试题目整理及题目(1) Python部分 计算机网络 参考资料 Python部分 迭代器生成器,生成器是如何实现迭代的? 答:迭代器iterator:迭代器就是实现了迭代方式的容器,iter ...

  6. 各公司 Java 面试题目整理(基础+高级+算法+数据库)

    包含 Java 面试的各个方面,史上最全,苦心整理最全 Java 各公司面试题目整理包括但不限于基础+高级+算法+数据库优化+算法优化,使用层面广,知识量大,涉及你的知识盲点.要想在面试者中出类拔萃就 ...

  7. 【面试】网易游戏面试题目整理及答案(3)

    网易游戏面试题目整理及答案(3) 数据库部分 MySQL 事务 MySQL锁机制 MySQL调优 MySQL分区.分表.分库 主从复制 其他问题 数据库部分 MySQL 事务 事务的隔离级别有哪些?M ...

  8. 嵌入式软件工程师面试题目整理(一)

    文章目录 嵌入式软件工程师面试题目整理(一) Arm有多少32位寄存器? Arm2440和6410有什么区别 CPU,MPU,MCU,SOC,SOPC联系与差别 上拉&下拉&高阻态 串 ...

  9. 【面试题】某司社招面试题目整理及答案

    某司社招面试题目整理及答案 Java基础部分 HashMap的实现原理 如何解决Hash碰撞 HashMap的存储(hash算法.hash冲突.初始化.扩容) HashMap和HashTable的区别 ...

最新文章

  1. C++ 面试题:子类与父类同名变量
  2. sourcetree 回滚
  3. 盘点VS2015 预览版的5个新特性
  4. question regarding UI configuration type
  5. JS原生方法实现jQuery的ready()
  6. “解救”外卖骑手,美团首次公开算法规则!
  7. mysql从盘延迟_Mysql-主从延迟解决方法
  8. C/C++—— #include“stdafx.h”详解
  9. CopyTranslator(复译)-外文辅助阅读翻译解决方案
  10. c#读取csv文件成DataTable,将DataTable数据存储为csv格式文件
  11. IE11浏览器清空缓存
  12. C语言 execve()函数使用方法
  13. html盒子浮动分栏,DIV浮动定位实现CSS分栏布局
  14. Kindle for Android打开本地mobi文件
  15. cardboardSDK VR开发srcollview溢出解决。
  16. 高级计算机工程师查询,高级工程师证书查询网站
  17. aliyun cloud ide
  18. python 贪吃蛇大作战_Python实现贪吃蛇大作战
  19. 从自身谈在成熟与幼稚公司做测试的差别
  20. Quartus II与ModelSim联合仿真

热门文章

  1. 微信小程序如何修改项目首页
  2. 莫奈克系统服务器,默纳克主机自学习(简版)
  3. 面试:解释一下什么是AOP
  4. 两人取石子游戏 组合数学-博弈问题
  5. vue接口token认证登录(加手机验证)
  6. 如何在WP7上用XNA写2D游戏(一)
  7. 海贼王热血航线服务器维护4月,《航海王热血航线》4月29日停服更新公告
  8. IB课程成绩还能换美国藤校学分?
  9. 使用STC15F104W产生PWM脉冲
  10. 来谈谈SEM及SEO优化