Python⾃动化测试⾯试题
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 = CurrentUrl();
17、WebDriver的close()和quit(⽅法的区别是什么?
linux软件培训中心
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:
python基础知识测试for key,value in data_dict.items():
# 如果值在列表中不存在,则添加到结果列表中
if num == value and key not in result:
result.append(key)
return result
a1 = get_datas(a)
执⾏结果:
25、例如: 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()
26、编写⼀个程序:---没弄懂
1、能在当前⽬录以及当前⽬录的所有⼦⽬录下查⽂件名包含指定字符串的⽂件;
2、并打印出相对路径。
import os
paths = []
def get_paths(dir, relate_dir=None, search_str=None):
global paths
if search_str == None:
return os.listdir(dir)
for item in os.listdir(dir):
if relate_dir == None:
relate_dir == os.curdir
if os.path.isfile(os.path.join(dir, item)):
if item.find(search_str) != -1:
paths.append(os.path.join(relate_dir, item))
elif os.path.isdir(os.path.join(dir, item)):
paths = get_paths(os.path.join(dir, item), os.path.join(relate_dir, item), search_str)
return paths
cloak
dir = os.getcwd()
search_str = "fun"
print(get_paths(dir, search_str=search_str))
27、请写出下列代码的运⾏结果
native可数吗def f(str1, *args, **kwargs):
print(str1, args, kwargs)
l = [1, 2, 3]
t = [4, 5, 6]
d = {"a": 7, "b": 8, "c": 9}
f(1, 2)
f(1, 2, 3, "python")
f("python", l, d)
f("python", *t)
f("python", *l, **d)
f("python", q="winning", **d)
执⾏结果:
1 (2,) {}
1 (2, 3, 'python') {}
python ([1, 2, 3], {'a': 7, 'b': 8, 'c': 9}) {}
python (4, 5, 6) {}
python (1, 2, 3) {'a': 7, 'b': 8, 'c': 9}
python () {'q': 'winning', 'a': 7, 'b': 8, 'c': 9}
28、请写下列代码的运⾏结果
import copy
a = [1, 2, 3, 4, ["a", "b"]]
b = a
c = py(a)
d = py(a)
a.append(5)
a[4].append("c")
# 请根据以上规则填写⼀下输出内容
print('a=', b)
print('b=', b)
print('c=', c)
print('d=', d)
执⾏结果:
a= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c= [1, 2, 3, 4, ['a', 'b', 'c']]
d= [1, 2, 3, 4, ['a', 'b', 'c']]
29、等长的两个列表合并到⼀个字典,要求:合并成{'A': 1, 'B': 2, 'C': 3},请⽤⼀⾏代码实现keys = ["A", "B", "C"]
values = ["1", "2", "3"]
print(dict(zip(keys, [int(x) for x in values])))
30、合并两个列表并消除重复值
list_1 = ["a", "b", "c", "1", "A", "winning"]
list_2 = ["a", "python", "string"]
print(set(list_1 + list_2))
# 执⾏结果:{'c', 'winning', '1', 'string', 'b', 'a', 'python', 'A'}
31、已知⼀个列表,根据字典中的x ,由⼤到⼩排序这个列表
a = [{"x": 1, "y": 2}, {"x": 2, "y": 3}, {"x": 3, "y": 4}]
aa1 = sorted(a, key=lambda item: item["x"], reverse=True)
print(aa1)
# 执⾏结果:[{'x': 3, 'y': 4}, {'x': 2, 'y': 3}, {'x': 1, 'y': 2}]
32、Html的基本结构是怎么样的,如何绘制⼀个2X2的表格
<html>
<head>
<title>两⾏量列的表格</title>
-<head>
<body>
<tatle width="200" border="1">
<tr><td> </td>
<td> </td>
-</tr>
<td> </td>
<td> </td>
-</tr>
-</table>

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