精心整理总结的Python自动化测试面试题
作者:软件测试老莫 发布时间:2022-07-27 08:13:00
1、自动化代码中,用到了哪些设计模式?
单例设计模式
工厂模式
PO设计模式
数据驱动模式
面向接口编程设计模式
2、什么是断言( Assert) ?
断言Assert用于在代码中验证实际结果是不是符合预期结果,
如果测试用例执行失败会抛出异常并提供断言日志
3、什么是web自动化测试
Web自动化测试是从UI (用户界面)层面进行的自动化测试,
测试人员通过编程自动化程序(测试用例脚本)来打开浏览器测试网站的业务逻辑。
4、什么是Selenium?
Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试
5、写出Selenium中你最熟悉的接口或类
WebDriver、InternetExplorerDriver、 FirefoxDriver、 ChromeDriver、 WebElement、WebDriverWait、 By
6、元素定位类型有哪些?
By类一共有8种元素定位方式,它们都是静态方法:
By.id():
By.name():
By.tagName():
By.className():
By.cssSelector():
By linkText():
By partialLinkText():
By.xpath():
7、Xpath是什么?
它是查找web页面元素的一种方式,相当于元素在dom中间的一个路径,可以采用绝对路径和相对路径的方式进行定位
它对于定义动态的页面元素有很大的帮助,同时也需要谨慎使用,因为如果页面结构发生变化,那么定位信息也可能需要变化。
8、findElement()和findElements(方法有什么区别
两个都是查找页面元素的方法
findElement():查找一个页面元素,只会返回一个WebElement对象
findElements() :查找页面上所有符合匹配的元素,返回元素集合
9、登录按钮除了用click方法进行点击以外还有其他方式吗?
还可以使用submit()方法,前提是input元素的type为submit
10、怎么提高Selenium脚本的执行速度
优化等待时间:使用 WebDriverWait 智能等待来代替线程等待 sleep 和 隐式等待 implicityWait
减少不必要的操作:如直接进入某页面代替经过一系列自动化操作进入某页面在服务器允许的情况下,使用多线程实现并发执行测试用例.
11、怎么对含有验证码的功能进行自动化测试的
1) :图像识别,技术难度大,效果不佳,不推荐
2) :屏蔽验证码,邀请开发处理,但在预生产环境或者生产环境不推荐
3) :万能验证码,使用一个复杂的其他人无法猜到的验证码
12、怎么验证复选按钮是不是被选中
可以使用元素的 isSelected() 方法,如果返回的是 true 则说明被选中,否则表明未被选中
13、如何处理alert弹窗?
处理 alert 弹窗首先需要先跳转到 alert 上,然后在点击确定或者取消按钮,
Alert alert = driver.switchTo().alert(); //切换到alert
alert.accept0; //确定
alert.dismiss0; //取消
14、下拉菜单中如何去选择一个菜单项?
如果下拉菜单是select标签,使用方法: selectByValue() 或者 selectByIndex() 或者 selectByVisibleText() 即可
如果这个下拉菜单不是通过 select 标签创建,则直接通过 xpath 定位元素然后去点击选择
15、如何模拟浏览器的前进和后退、刷新操作
driver.navigate().back()://后退
driver. navigate().forward()://前进
driver.navigate0.efresh()://刷新
16、怎么获得当前页面的URL?
String url = driver.getCurrentUrl();
17、WebDriver的close()和quit(方法的区别是什么?
close()方法只是关闭当前正在操作的窗口
quit()是关闭了所有已经打开的窗口
18、你觉得自动化测试用哪些缺陷
成本比较大,而成效可能并不高
适合自动化测试的功能有限
某些功能操作相对复杂,比如验证码
维护成本高,一旦项目需求变更,自动化测试脚本和用例就需要改进
19、Web端功能自动化,如何实现(非input型上传)上传文件
与windows窗口进行交互,可以使用 pywin32库 实现。
20、遇到 d1 class="inf-bar clearfix" 这种class中间有空格的控件,如何通过class定位?
xpath定位:直接//d1 [@class="inf_bar clearfx"]
css定位: d1.inf_bar.clearfix
21、Selenium自动化,遇到 iframe 如何处理?
使用switch_ to.frame 切换进 iframe 当中后 ,再去定位其中的元素并操作
22、Web端功能自动化中,如何切换句柄。
先获取所有窗口句柄,然后使用 switch_ to.window() 切换到指定窗口
23、测试中遇到 readonly 属性的控件,需要如何处理?
简述一下思路 先修改关闭r eadonly 属性,然后再操作元素。
需求:给定一个只包含正整数且非空的数组,返回该数组中重复次数最多的前N个数字(返回结果按重复次数从多到少降序), 请用熟悉的语言实现该需求。10分钟内写出来
a = [1, 6, 7, 4, 4, 5, 4, 5, 4, 5, 5, 6, 7, 8, 5, 6, 7, 3, 4, 2, 2, 1, 4, 8, 9, 4, 5, 6]
def get_datas(a):
result = []
data_dict = {}
# 键值对:键:数字,值:在列表中的次数
for item in set(a):
data_dict[str(item)] = a.count(item)
print(data_dict)
# 将键值对按值(数字出现的次数)排序 ---从高到低排序
res = sorted(data_dict.values(),reverse=True)
for num in res:
for key,value in data_dict.items():
# 如果值在列表中不存在,则添加到结果列表中
if num == value and key not in result:
result.append(key)
return result
a1 = get_datas(a
执行结果:
24、例如: passwd={"admin'":"123321","user1":" 123456"} 满足一下条件?
1、设计一个登陆程序,不同的用户名和对应密码存在一一个字典里面,输入正确的用户和密码去登陆,
2、首先输入用户名,如果用户名不存在或者为空,则一直提示输入正确的用户名
3、 当用户名正确的时候,提示去输入密码,如果密码跟用户名不对应,则提示密码错误请重新输入。
4、如果密码输入错误超过三次,中断程序运行。
5、当输入密码错误时,提示还有几次机会
6、用户名和密码都输入成功的时候, 提示登陆成功!
users = {"admin": "123456", "user1": " 123456"}
count = 0
def login():
global count
username = input("请输入用户名:")
if username == None or username == "":
login()
if username not in users.keys():
print("用户名输入不正确,请重新输入用户名:")
login()
while (count < 3):
passwd = input("请输入密码:")
if passwd == users[username]:
print("登录成功!!")
count = 3
else:
count += 1
print("密码输入错误,您还有{0}次机会。".format(3 - count))
login()
来源:https://blog.csdn.net/MXB_1220/article/details/124039190
猜你喜欢
- 来介绍一下 Python 是采用何种途径解决循环引用问题的。上图中,表示的是对象之间的引用关系,从自对象指向他对象的引用用黑色箭头表示。每个
- 最近写了一个网络验证登录的爬虫,需要发布为Rest服务,然后发现Flask是一个很好的Web框架,使用Python语言实现。1. 安装fla
- 做python项目时,想安装某个依赖包的最新版本,但又不知道它的版本号具体到多少,因此需要搜索查看它的相关简介信息.原来的时候,可以直接通过
- 本文是对pandas官方网站上《10Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对pandas的一个简单的介
- 前言Go的错误处理这块是日常被大家吐槽较多的地方,我在工作中也观察到一些现象,比较严重的是在各层级的逻辑代码中对错误的处理有些重复。比如,有
- asyncio介绍熟悉c#的同学可能知道,在c#中可以很方便的使用 async 和 await 来实现异步编程,那么在p
- 1.怎么样查看数据库字符集 [A]数据库服务器字符集select * from nls_database_parameters,其来源于pr
- 在日常的工作中,保护数据免受未授权用户的侵犯是系统管理员特别关心的问题。如果你目前用的是MySQL,就可以使用一些方便的功能来保护系统,来大
- 打包下载Pain.php <?php class Pain { public $var=array(); public $tpl=ar
- 说起INDEX SERVER,我自己本来用的也不多,不过前两天公司要做一个INDEX的搜索,我从网上找了好多的资料,仔细分析了以后自己启动了
- 上一章节我们学习了如何生成 word 文档以及在文档行中添加各种内容,今天我们基于上一章节的内容进行添砖加瓦 —>
- 背景:目前keras框架使用简单,很容易上手,深得广大算法工程师的喜爱,但是当部署到客户端时,可能会出现各种各样的bug,甚至不支持使用ke
- 简述:Django的admin可以提供一个强大的后台管理功能,可以在web界面对数据库进行操作,我们需要修改admin.py将要操作的数据表
- “用户体验(User Experience,简称UX 或 UE)是一种纯主观的在用户使用一个产品(服务)的过程中建立起来的心理感受。因为它是
- 引言在 Linux 服务器上,磁盘空间的使用情况是一个非常重要的指标。如果服务器上的磁盘空间不足,可能会导致服务器崩溃,影响网站的正常运行。
- 什么是Dynamic HTML 今天我们以问答的形式来讲述什麽是Dynamic Html。问:亲爱的网猴,我经常看到讲述有关“Dynamic
- 本文实例讲述了php自定义函数实现二维数组按指定key排序的方法。分享给大家供大家参考,具体如下:二维数组官方的排序方法并不好,该函数可以进
- 新标准的熟悉和入门内容: 还在用 HTML 编写文档?如果是的话,就不符合当前标准了。2000 年&
- Real Numbers实数实数是具有小数部分的数字, 当然, 实数不是专门用来表示小数的, 也可以用DECIMAL来存储那些无法用INTE
- 导语嘿!前不久刚刚给大家过一款反弹球的小游戏嘛!不知道大家还记得不?不记得可以看下往期的内容呢,在上一期的基础上升级了这款打砖块的小游戏,界