自动化代码中,用到了哪些设计模式?
1.单例设计模式
2.工厂模式
3.PO设计模式
4.数据驱动模式
5.面向接口编程设计模式
什么是断言(Assert)?
断言Assert用于在代码中验证实际结果是否与预期结果相符
如果测试用例执行失败会抛出异常并提供断言日志
什么是web自动化测试
web自动化测试是从UI(用户界面)层面进行的自动化测试
测试人员通过编程自动化程序(测试用例脚本)来打开浏览器测试网站的业务逻辑
什么是Selenium?
Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试
写出Selenium中最熟悉的接口或类
WebDriver 、 InternetExplorerDriver、 ChromeDriver、 WebElement、WebDriverWait、 By
元素定位类型有哪些?
By类一共有8种元素定位方式,都是静态方法:
By.id()
By.name()
By.tagName()
By.className()
By.cssSelector()
By linkText()
By partialLinkText()
By.xpath()
Xpath是什么
xpath是查找web页面元素的一种方式,相当于元素在dom中间的一个路径,可以采用绝对路径和相对路径的方式进行定位
xpath对于定义动态页面元素需谨慎使用,因为如果页面结构发生变化,定位信息可能需要变化
findElement()和findElements()方法有什么区别
两者都是查找页面元素的方法
findElement():查找一个页面元素,只会返回一个webElement对象
findElemnets():查找页面上所有符合匹配的元素,返回元素集合
登录按钮除了用click方法进行点击以外还有其他方式吗
还可以用submit()方法,前提是input元素的type为submit
怎么提供Selenium脚本的执行速度
优化等待时间:使用WebDriverWait智能等待来代替线程等待sleep和隐式等待implicityWait
减少不必要的操作:如果直接进入某页面代替经过一系列自动化操作进入某页面在服务器允许的情况下,使用多线程实现并发执行测试用例
怎么对含有验证码的功能进行自动化测试
1.图像识别,技术难度大,效果不佳,不推荐
2.屏蔽验证码,邀请开发处理,但在预生产环境或者生产环境不推荐
3.万能验证码,使用一个复杂的其他人无法猜到的验证码
怎么验证复选框按钮是否被选中
可以使用元素的isSelected()方法,如果返回的是true则说明被选中,否则未被选中
如何处理alert弹窗?
处理alert弹窗首先需要先跳转到alert上,然后在点击确定或取消按钮
Alert alert=driver.switchTo(); //切换到alert
alert.accept(); //确定
alert.dismiss(); //取消
下拉菜单中如何取选中一个菜单项
如果下拉菜单是select标签,使用方法:selectByValue() 或者 selectByIndex() 或者selectByVisibleText()即可
如果这个下拉菜单不是通过select标签创建,则直接通过xpath定位元素然后去点击选择
如何模拟浏览器的前进和后退、刷新操作
driver.navigate().back();//后退
driver.navigate().forward(); //前进
driver.navigate().efresh(); //刷新
怎么获取当前页面URL
String url=driver.getCurrentUrl()
WebDriver的close()和quit()方法的区别
close()方法只是关闭当前正在操作的窗口
quit()是关闭了所有已经打开的窗口
自动化测试有哪些缺陷
成本比较大,而成效可能并不高
适合自动化测试的功能有限
某些功能操作相对比较复杂,比如验证码
维护成本高,一旦项目需求变更,自动化测试脚本和用例就需改进
web端功能自动化,如何实现(非input型上传)上传文件
与windows窗口进行交互,可以使用pywin32库实现
遇到这种class中间有空格的控件,如何通过class定位
xpath定位:直接 //d1[@class="inf_bar clearfix"]
css定位:d1.inf_bar.clearfix
Selenium自动化,遇到iframe如何处理
使用switch_to.frame切换进iframe当中后,再去定位其中的元素并操作
web端功能自动化中,如何切换句柄
先获取所有窗口句柄,然后使用switch_to.window()切换到指定窗口
测试中遇到readonly属性控件,需要如何处理
先关闭readonly 属性,然后再操作元素
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 = dict()
for item in set(a):
data_dict[str(item)] = a.count(item) # 键:值
print(data_dict)
res = sorted(data_dict.values(),reverse=True)
print(res)
for num in res:
for key, value in data_dict.items():
if num == value and key not in result:
result.append(key)
print(result)
get_datas(a)
例如:passwd={"admin":"123456","user1":"123456"}满足的条件
1.设计一个登陆程序,不同的用户名和对应密码存在一个字典里,输入正确的用户名和密码去登陆
2.首先输入用户名,如果用户名不存在或者为空,则一直提示请输入正确的用户名
3.当用户名正确的时候,提示输入密码,如果密码跟用户名不对应,则提示密码错误请重新输入
4.如果密码输入错误超过3次,中断程序运行
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()
最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。