python自动化测试面试题(二)(持续更新)
接上一篇博文:https://blog.csdn.net/YZL40514131/article/details/125940126
21、selenium原理
a、当使用 Selenium 2.0 启动浏览器时,后台会同时启动基于 WebDriver Wire 协议的Remote Server,并与浏览器绑定。之后,Remote Server 就开始监听 Client 端的操作请求;
b、执行测试时,测试用例会作为 Client 端,将需要执行的页面操作请求以 Http Request 的方式发送给 Remote Server 。该 Http Request 的 body,是以 WebDriver Wire 协议规定的 JSON 格式来描述需要浏览器执行的具体操作;
c、Remote Server 接收到请求后,会对请求进行解析,并将解析结果发给 WebDriver,由WebDriver 实际执行浏览器的操作;
WebDriver 可以看做是直接操作浏览器的原生组件(Native Component),所以搭建测试环境时,通常都需要先下载浏览器对应的 WebDriver。
22、你的自动化用例的执行策略是什么?(重要)
1、自动化测试用例是用来监控的,再次目的下,我们就把自动化测试用例设置成定时执行的,每30分钟执行一次,在jenkins上创建一个定时任务即可
2、必须回归的用例。有些测试用例,在产品任何变动上线之前都需要回归测试
3、不需要经常执行的测试用例,我们没有必要一直回归执行,毕竟是有时间消耗的,有些时候非必要的业务不需要经常回归
4、不需要经常执行的测试用例就需要人工执行,在jenkins创建一个任务,需要执行的时候人工构建
23、Selenium有哪几种定位方式?用的最多的是哪种?
tag_name:通过标签名称,找出来的元素太多了
name:用户输入input,不出意外总会有name属性
class_name
id:
1、同一个页面当中,某个id只能用一次,
2、如果元素有id,会优先使用id定位,
3、不好的消息,不是所有的元素都有id
link_text:连接的文本,只能用来定位连接
partial_link_text
css_selector
xpath:用的最多,具体的用法在博文https://blog.csdn.net/YZL40514131/article/details/123858970
24、UI自动化能发现多少Bug
UI自动化的目的不是为了发现多少Bug,主要是为了减轻重复的基础操作和线上监控的作用
25、你们一般对什么case会进行自动化,自动化一般在哪个阶段进行
a、按照用户逻辑,从登录平台到操作一个完整的流程再到最后关闭浏览器这一套实现自动化,其中包括好多正向用例,
b、比较繁琐的操作,需要手工多次点点的对于这部分用例,也实现自动化测试
c、核心业务整个流程
a、项目后期进行回归测试、
b、其他项目上线会影响到该项目时,做回归测试
c、运维对数据库进行迁移时,做全量的回归测试
d、主要是主流程中比较容易实现的进行自动化,一般在集成阶段进行该版本的自动化监控,平常的话会一直跑线上监控的
26、你觉得自动化测试最大的缺陷是什么?
不可靠
不稳定
页面变化大,维护成本高
27、明明自己定位的元素是对的,执行自动化测试脚本时却报错,这时你有几种方法解决此问题?请写出你的解决方法(重要)
1、网络问题
2、环境问题
3、脚本稳定性问题(必要的时候加强制等待)
4、不在指定的frame
5、不在指定的窗口中
6、开发更新了代码,但是测试没有修改
28、简单说出如何用自动化测试脚本实现遍历复选框点击功能(要求全部勾上)。
xPathRadio = driver.find_element_by_xpath('//input[@type="radio"]')
# radiobox复选框对象我们必须使用find_elements方法去定位多个元素(复选框就是多元素)
radioboxes = driver.find_elements_by_xpath(xPathRadio)
# 使用循环遍历的方式,逐个点击这些定位到的元素
for radiobox in radioboxes:radiobox.click()
29、 自动化测试用例如何编写?(重要)
a.用例是自动化测试工程师自己设计的,一般刚开始已基本业务流程为主(登录–完成一个业务–退出)
b.从系统测试用例中进行筛选或由业务工程师提供
30、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?(重要)
a、引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG
b、测试环境和线上环境监控
c、运维对数据库的迁移
31、如果一个元素无法定位,你一般会考虑哪些方面的原因?(重要)
a.网络问题或者前端html和css加载过慢,导致页面加载元素过慢,加等待时间
b.页面有frame框架页,需要先跳转入frame框架再定位,不在指定的窗口中,
c.可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。
d.可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成,
32、怎么验证元素是enable/disabled/checked状态?
定位元素后:分别通过isEnabled(),isSelected(),isDisplayed()三个方法进行判断。
33、自动化测试的时候是不是需要连接数据库做数据校验?
UI自动化不需要
接口测试会需要
34、举例一下说明一下你遇到过那些异常
ElementNotSelectableException
:元素不能选择异常
ElementNotVisibleException
:元素不可见异常
NoSuchAttributeException
:没有这样属性异常
NoSuchElementException
:没有该元素异常
NoSuchFrameException
:没有该frame异常
TimeoutException
: 超时异常
Element not visible at this point
:在当前点元素不可见
35、如何设计高质量自动化脚本(重要)
1、业务逻辑和测试逻辑分离。
2、业务中定义的方法和公共方法分离
3、测试数据和测试逻辑分离
4、元素表达式和页面方法分离
5、使用PO设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素定位发生了改变,我们只用修改这个页面的元素属性
6、对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。
7、测试用例设计中,减少测试用例之间的耦合度。
36、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?(重要)
1.在经常检测失败的元素前尽量加上显式等待时间,等要操作的元素出现之后再执行下面的操作;
2.多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;
3.多用 try 捕捉,处理异常;
4.尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。
37、webdriver可以用来做接口测试吗?
不可以,webdriver是专门做web的UI自动化参数
38、在python中进行数据驱动测试
在unittest中,没有自带的数据驱动,我们得借助第三方库ddt来实现,首先,我们得在python运行环境中安装ddt,用下列命令安装
pip install ddt
另外一个测试框架pytest,它自带数据驱动实现,是通过 @pytest.mark.parametrize(argnames,argvalues)
来实现参数化的。
也可以根据自己需求用python实现数据的读取和驱动。
39、pytest 和 unittest 的区别?
1、pytest有自动收集用例的的功能
2、pytest有上千种插件,自己的插件系统
3、pytest有失败重新运行的功能
4、pytest有非常灵活的测试夹具、fixture、setUp、tearDown
5、pytest和unittest是完全兼容的
40、find_element() 和 find_elements() 有什么区别?
find_element() :获取单个元素
el_list=driver.find_element_by_xpath(‘//div[@class=“name-box”]/a’)
find_elements() :获取一组元素
el_list=driver.find_elements_by_xpath(‘//div[@class=“name-box”]/a’)
例如:
from selenium import webdriver
import time
driver=webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get('https://qidian.com/rank/')#获取一组元素
el_list=driver.find_elements_by_xpath('//div[@class="name-box"]/a')
print(len(el_list))#遍历列表
for el in el_list:print(el.text)
执行结果
捕星之执宰星河
7号基地
陈医生,别怂!
请公子斩妖
开局就较真,对面被我吓到报警!
做媒这一块,我谁都不服
曾经,我想做个好人
大明:我,调教木匠皇帝
身为超人弟弟的我却成了祖国人灵境行者
明克街13号
这游戏也太真实了
不科学御兽
家父汉高祖
深空彼岸
择日飞升
我的属性修行人生
我已不做大佬好多年择日飞升
夜的命名术
陈医生,别怂!
我的属性修行人生
我在修仙界长生不死
开局就较真,对面被我吓到报警!
宇宙职业选手
深空彼岸
什么叫六边形打野啊夜的命名术
家父汉高祖
择日飞升
明克街13号
这游戏也太真实了
道诡异仙
大乘期才有逆袭系统
我的属性修行人生
不科学御兽从洪荒逃到武侠
美漫:我的战锤模拟器
曹操穿越武大郎
捉诡二十年,我进入了惊悚游戏
什么叫Carry型上单啊
代价逆转:我在大周斩仙
从体术开始纵横诸天
从欢乐颂开始的影视人生
这个武者太危险
python自动化测试面试题(二)(持续更新)相关推荐
- 接口自动化测试面试题(持续更新中)
1.接口自动化框架搭建 Python+pytest+requests+openpyxl+pymysql+logure+allure+jenkins 分为common层 testcases层 testd ...
- 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(8)
推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...
- 面试1:Java、微服务、架构常见面试题(持续更新中)
Java.微服务.架构常见面试题(持续更新中) 文章目录 Java.微服务.架构常见面试题(持续更新中) ==**Java**== 1.Java概述 (1)JVM.JRE和JDK (2)Java特点 ...
- 面试题(持续更新……)
前端面试题(持续更新) 1.说说你对react的理解?有哪些特性? 特性 2.说说Real DOM和Virtual DOM的区别?优缺点? 3.说说React生命周期有哪些不同的阶段?每个阶段对应的方 ...
- 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(4)
推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...
- 【干货】Python:load_workbook用法(持续更新)
[干货]Python中load_workbook用法(持续更新) 功能 方法 示例文件 模块读取 导入excel表格 获取Sheet 查看行与列 查看单元格 批量访问数据 功能 读取excel文件,并 ...
- 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(3)
推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...
- 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(1)
推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...
- python自动化测试面试题大全带答案_Python自动化测试笔试面试题精选
前言 随着行业的发展,编程能力逐渐成为软件测试从业人员的一项基本能力.因此在笔试和面试中常常会有一定量的编码题,主要考察以下几点. 基本编码能力及思维逻辑 基本数据结构(顺序表.链表.队列.栈.二叉树 ...
- 从 0 开始学 Python 自动化测试开发(二):环境搭建
本文是「从 0 开始学 Python 自动化测试开发」专题系列文章第二篇 -- 环境搭建篇,适合零基础入门的同学.没有阅读过上一篇的同学,请戳蓝色字体阅读.作者方程老师,是前某跨国通信公司高级测试经理 ...
最新文章
- 七年思考,两页证明,华人学者解开计算机领域30年难题:布尔函数敏感度猜想...
- NEC使用C+L EDFA在超过1.1万公里的海底光缆中首次实现50Tb传输
- Markdown编辑器editor.md的使用
- centos 添加中文输入法
- python学习笔记--easy_install和pip
- VTK:可视化之ElevationBandsWithGlyphs
- oracle exp 二进制,Oracle备份之exp自动逻辑备份(二)
- bp神经网络_BP神经网络的原理介绍
- Android——Fragment介绍
- 定时线程的使用 java_Java线程Timer定时器用法详细总结
- android标题栏不被顶上去,Android仿微信QQ聊天顶起输入法不顶起标题栏的问题
- js中的fromCharCode() charCodeAt() charAt()
- 运行出现 Multiple dex files define Landroid/support/annotation/AnimRes 解决方法
- 关于excel文件损坏的处理方法
- android 小米手机如何进入开发者模式
- 双人版井字棋游戏c语言设计报告,井字棋游戏课程设计总结报告.doc
- south的使用总结
- 开关电源原理、电路组成部分
- python打开操作写入excel操作
- How to convert mkv to mp4 lossless