当前位置: 首页 > news >正文

测试用到的测试工具总结一手

.什么是selenium

Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,支持多平台、多浏览器、多语言去实现自动化测试,Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。
支持多种开发语言:ruby,python,java,perl,c#等,同时Selenium 测试直接自动运行在浏览器中,就像真正的用户在手工操作一样。支持的浏览器包括 IE、Chrome 和 Firefox等。
Selenium已经从之前的1.0(RC(Remote Control))进化到了现在Selenium2(Selenium1+WebDriver)。
Selenium 2.0(又名Selenium WebDriver)的主要新功能是集成了 WebDriver。

两个版本区别: Selenium RC 在浏览器中运行 JavaScript 应用,而 WebDriver
通过原生浏览器支持或者浏览器扩展直接控制浏览器。 之所以合并,原因如下: WebDriver 解决了 Selenium
存在的缺点(比如,绕过 JS 沙箱); Selenium 解决了 WebDriver 存在的问题(例如支持广泛的浏览器); Selenium
的主要贡献者们都觉得合并项目是为用户提供最优秀框架的最佳途径。

简单介绍一下webdriver的工作原理:

1.启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的 remote server。
2.客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端
3.Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

如何实现用 selenium实现测试

1.首先导入相应的包,selenium中的 webdriver 还有 time 包(用于管理时间间隔)
2.通过webdriver进行方式定位,并加上需要进行的操作。
3.退出selenium释放资源。

#coding=utf-8
from selenium import webdriver
import time
browser = webdriver.Chrome() 
browser.get("http://www.baidu.com")   

#########百度输入框的定位方式##########
#通过id 方式定位
browser.find_element_by_id("kw").send_keys("selenium")
 
#通过name 方式定位
browser.find_element_by_name("wd").send_keys("selenium")

#通过tag name 方式定位
browser.find_element_by_tag_name("input").send_keys("selenium") 不能成功,因为input太多了不唯一。

#通过class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")

#通过CSS 方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")

#通过xphan 方式定位
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")

############################################
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()

selenium的定位方法

1.id和name定位还有tag name 和 class name定位

我们通过前端工具,例如chrome的F12,找到了百度输入框的属性信息,如下:

<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">```

id=”kw”
通过find_element_by_id("kw") 函数就是捕获到百度输入框

name=”wd”
通过find_element_by_name("wd")函数同样也可以捕获百度输入框

find_element_by_tag_name("input") 

class="s_ipt",通过find_element_by_class_name("s_ipt")函数捕获百度输入框。

2.css和xpath则是需要进入f12并找到需要的内容进行复制。

```c
在这里插入代码片

具体的功能

send_keys(“xx”) 用于在一个输入框里输入xx 内容。
click() 用于点击一个按钮
clear() 用于清除输入框的内容,比如百度输入框里默认有个“请输入关键字”的信息,再比如我们的登陆框一般默认会有“账号”“密码”这样的默认信息,clear 可以帮助我们清除这些信息。

driver.find_element_by_id(“su”).submit() 提交功能。

data=driver.find_element_by_id(“cp”).text 用来获取文档。

添加等待

加入time包就是时间等待
time.sleep(3) #普通的等待三秒
browser.implicitly_wait(30) #智能等待30秒

系统——Loadrunner性能测试(发布博客功能 基准测试)

录制然后多线程,运行分析结果。

测试中遇到的问题

1. selenium

定位不到/操作不了元素的常见原因
1、没有切换到正确的frame。
项目中遇到过一个对象配置窗口所在的iframe的id会变化,有时候是frame1,有时候是frame2。但是其实frame1和frame2始终都是存在的。处理方式是,如果frame1中找不到要操作的元素,捕捉异常,切换到frame2进行查找。
2、没有切换到正确的window。这里window不是指弹出窗口,而是指另一个网页窗口,或者是浏览器的另一个标签页。
3、定位信息发生变化,比如id变化、class变化(导致css选择器变化),xpath变化。项目中遇到每次打开页面时,某些元素的id值会变化。因为js的存在,所以页面元素的XPATH可能会发生变化(不能使用xpath)。
4、JS还没有执行完。元素还不可见、还没有使能、还不能点击等导致不能操作。解决方法见JS执行未完成和元素可靠操作。
5,操作过快 来不及页面响应 需要加一下停顿。
6. 有些网页有一些反作弊机制,需要加一些随机点。

UI自动化遇到弹窗咋办

其实在webdriver中很好处理我们有一下方法进行处理:

accept() 接受警告框
text 返回警告框中的文字
dismiss 解散现有警告框
send_keys 将文本发送至警告框

# coding:utf-8
# 导入selenium
from selenium import webdriver
# 导入time  sleep设置等待时间   sleep单位为秒
import time

# 初始化谷歌浏览器驱动
driver = webdriver.Chrome()
driver.get('http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html')
# 浏览器最大化
driver.maximize_window()
# 等待1秒
time.sleep(1)
# 点击登录按钮
driver.find_element_by_id('submit').click()
# 等待2秒
time.sleep(2)
# 进行接受警告框操作,接口警告框
driver.switch_to.alert.accept()
# 获取警告框文字
# driver.switch_to.alert.text
# 像警告框发送文本
# driver.switch_to.alert.send_keys('坚持就是胜利')
# 解散警告框
# driver.switch_to.alert.dismiss()
# 等待2秒
time.sleep(2)
# 关闭浏览器
driver.quit()


截屏:

应用场景:做UI自动化测试,因为是自动化所以是需要机器自动运转,人工定期检查测试报告,但是运行完成之后,出现测试不通过的场景,我们就可以通过截屏的方式来查看当时页面的现实情况,从而实现问题定位
下面我们介绍常用的一种,截取全屏,使用get_screenshot_as_file就可以完成,示例如下:

driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.get_screenshot_as_file("D:\photo\\"+str(time.time())+'.png')

实习干了什么 思爱普

主要是业务功能测试 (由于编程语言不通,思爱普使用的是abap),主要负责了现金池的测试。首先要理解现金池包含什么,包含每个银行账户存的钱,在测试过程中发现了一些问题比如,测试的时候,删除了一些用户的资金,不会及时显示。需要一些金融的前置知识。还有一些 界面使用快捷键不会消失,比如有一个倒出表格的信息。

有一次找到一个缺陷 ,当bug报了出去,后来通过学习才知道,缺陷指的是一个问题会导致多个同样的问题,而发现出来的缺陷,正是由于,某几个app的框架缺陷,有了这个缺陷才会导致删除,前端页面不刷新,但是数据库中已经没有这个数据了。

w模型和 v模型

请添加图片描述
请添加图片描述

相关文章:

  • 【Vue五分钟】五分钟了解webpack实战配置案例详情
  • 如何让iOS设备上App定时执行后台任务(上)
  • 面试中遇到的错题(持续更新)
  • 还在为sql注入眼花缭乱的过滤而烦恼?一文教您快速找出所有过滤内容
  • vue中的插槽slot
  • 搭建Redis主从复制、哨兵模式
  • 深度解析ArrayList使用
  • 吴恩达深度学习笔记(六)——超参数调试、Batch正则化和程序框架
  • 【甄选靶场】Vulnhub百个项目渗透——项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取)
  • 苹果iPhone手机iOS16如何取消关闭复制粘贴时不停弹出的剪贴板粘贴提示通知弹窗?
  • Android移动应用开发之ImageView、ProgressBar和Notification的一些简单使用
  • SQL经典练习题(openGauss数据库)上
  • CSDN编程竞赛-第六期(下)
  • Spring 静态属性赋值 @value 注入静态属性 @Value注解用法
  • 【零基础学QT】第九章 窗口美化QSS的使用
  • 「面试题」如何实现一个圣杯布局?
  • Android优雅地处理按钮重复点击
  • CSS 专业技巧
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript学习总结——原型
  • rabbitmq延迟消息示例
  • XML已死 ?
  • 观察者模式实现非直接耦合
  • 普通函数和构造函数的区别
  • 智能合约开发环境搭建及Hello World合约
  • 容器镜像
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #QT(一种朴素的计算器实现方法)
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (4)logging(日志模块)
  • (C语言)球球大作战
  • (Oracle)SQL优化技巧(一):分页查询
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (九)c52学习之旅-定时器
  • (算法二)滑动窗口
  • (一)面试需要掌握的技巧
  • (转) Face-Resources
  • .describe() python_Python-Win32com-Excel
  • .jks文件(JAVA KeyStore)
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net SqlSugarHelper
  • .net 反编译_.net反编译的相关问题
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET运行机制
  • @ResponseBody
  • [ C++ ] STL_list 使用及其模拟实现
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • [C++] 统计程序耗时
  • [C++]:for循环for(int num : nums)
  • [C++打怪升级]--学习总目录