web&app自动化
2020-03-27 09:58:18 0 举报
AI智能生成
Web及App自动化测试整理
作者其他创作
大纲/内容
selenium
工具集
selenium IDE
firefox的插件
selenium Remote Control
执行javascript
完成复杂测试
支持多种语言、浏览器、系统
selenium Grid
分布式执行测试
支持多种语言、系统和浏览器
selenium Webdriver
原生浏览器支持
创建更高级的测试
支持多种语言编写测试脚本
工作流
测试脚本调用selenium调用浏览器软件
分支主题
环境
火狐
java
eclipse
selenium工作集
基础操作
自动化语法
对象+操作+数据
元素定位基础
元素ID
元素name
元素class name
分支主题
xpath
超链接文本
分支主题
分支主题
缺省超链接文本
分支主题
分支主题
元素Tag name
分支主题
分支主题
备注:超链接是a标签、输入框是input类型
输入框元素(Text)
属性
分支主题
操作
分支主题
按钮(Button/Submit)
分支主题
选择框(Select)
分支主题
元素操作基础
打开网址(get)
举例
分支主题
使用方式
分支主题
操作特性
页面完全打开后,方法才结束
注意事项
不判断重定向页面的打开情况
输入内容(sendkeys)
举例
分支主题
使用方式
分支主题
注意事项
在原来的基础上添加输入
点击元素(click)
举例
分支主题
使用方法
分支主题
操作特性
所有元素都是可以被点击的
注意事项
元素不能被遮挡
元素不能被隐藏
如css
清空内容(clear)
举例
分支主题
使用方法
分支主题
注意事项
整体清楚,不是按一下退格键单个删除
获取网址(getCurrentUrl)
举例
分支主题
使用方法
操作特性
分支主题
获取页面标题(getTitle)
举例
分支主题
使用方式
分支主题
注意事项
如果页面不存在title,则返回null
获取文案(getText)
举例
分支主题
使用方式
分支主题
注意事项
包含子元素中的Text内容
元素不能被CSS隐藏
关闭浏览器(quit)
举例
分支主题
注意事项
测试结束后如果不关闭浏览器,就会常驻浏览器,导致内存溢出
进阶操作
元素定位进阶
原因:有的元素没有id、name、class属性,所以需要全面通用的元素定位方法:xpath
xpath
XML path language
Xpath是一种查询语言、是一种用来确定XML文档中某部分位置的语言
语法
绝对路径 /
分支主题
分支主题
分支主题
模糊匹配路径 //
分支主题
分支主题
父节点 ..
分支主题
指定顺序【?】
分支主题
分支主题
星号 *(全匹配)
分支主题
分支主题
元素属性 @
分支主题
分支主题
Text
分支主题
start-with() & contains()
分支主题
分支主题
实战
工具:FireFox插件:Xpath Checker
driver.findElement(By.xpath("//xpath"))
举例
元素定位总结
元素具有ID属性,优先使用ID定位
其次使用name属性,但是需要确定是否唯一
定位链接元素,考虑使用Link Text
当其他定位方法无法转为定位时,使用cpath定位
xpath是通用的定位方法,但需要注意xpath语法的稳定性
分支主题
元素操作进阶
浏览器窗口切换(switchTo.window)
使用方法
分支主题
注意事项
每次打开同一窗口,window的句柄值都不一样
getWindowHandle返回当前窗口的句柄
举例
分支主题
Frames切换(switchTo.frame)
使用方法
分支主题
注意事项
建议通过frame的id或者name来进行切换,较少使用index
举例
分支主题
浏览器弹框操作(switchTo.alert)
使用方法
分支主题
注意事项
页面上出现了alert弹窗才可以使用switchTo.alert
只有alert类型的弹窗才适用
在alert弹窗消除之前,无法对页面上其他元素进行操作
举例
分支主题
元素拖拽操作(dragAndDrop)
使用方法
分支主题
分支主题
举例
分支主题
系统事件操作
举例
分支主题
bulid()
perform()
分支主题
分支主题
分支主题
注意事项
Action对象的动作链应该尽量的短。在使用中最好在执行一个简短的动作后验证页面是否处于正确的状态,然后再执行后面的动作
设置等待时间(WebDriver.Timeouts)
隐式等待(Implicit Waits)
分支主题
分支主题
显示等待(Explicit Waits)
举例
分支主题
注意事项
不要混用隐式等待(Implicit Waits)和显示等待(Explicit Waits),否则将会导致不可预计的等待时间
举例
更多操作可以在selenium官网中可以看到
web自动化实战
引入测试框架
问题
测试验证点(断点)
用例集的组织
测试报告
无错误、错误异常堆栈形式
安装eclipse的testng插件
分支主题
TestNG基础
注解(Annotation)
分支主题
使用方法
分支主题
验证(Assert)
分支主题
使用方法
分支主题
用例集组织
@Test属性使用
给测试方法增加分组属性
分支主题
给测试方法增加依赖关系
分支主题
testng.xml用例集
举例
分支主题
指定测试类
分支主题
仅执行某个分组的全部测试
分支主题
执行
IDE执行
分支主题
Ant/Maven执行
分支主题
命令行执行
分支主题
报告
Test-output
分支主题
举例
分支主题
前置准备
分支主题
分支主题
分支主题
分支主题
分支主题
测试退出(AfterClass)
分支主题
测试内容-验证点唯一
分支主题
测试内容-数据清理(AfterMethod)
分支主题
分支主题
分支主题
测试内容-数据驱动(@DataProvider)
分支主题
分支主题
移动自动化
概念
阶段
回归测试
兼容性测试
原因
更新频率:一月一次、不能过于频繁
质量要求非常高、因为更新成本高
回归测试
UI自动化框架
安卓、ios、语言、社区活跃度、安卓版本
分支主题
工具选择
appium
免费
开源
支持安卓、ios
无需修改被测应用
移动自动化接口一样
支持多个开发语言
appium
背景介绍
环境搭建
android
eclipse和java
ADT、SDK
模拟器(可选)
Appium图形化界面
ios
OS X Yosemite(10.10.3)
Xcode(6.4.6E35b)
command line tools
模拟器(可选)
Appium图形化界面
Appium基础
session创建
引入
手机设备
操作系统、版本、手机串号
被测应用
应用包名(apk还是ipa包)、包路径
appium的session和服务关键字
分支主题
服务关键字的配置
platformName-手机操作系统的的类型
分支主题
分支主题
platformVersion-手机操作系统的版本
分支主题
分支主题
分支主题
UDID-手机的deviceID
分支主题
deviceName-使用的手机名字
分支主题
支持真机和模拟器
分支主题
被测APP
分支主题
路径
本地的绝对路径,或者远程服务器上的地址
ipa或apk,或者前两者的压缩包.zip
分支主题
总结
分支主题
分支主题
创建session
基本语法
分支主题
元素定位
查看控件元素的工具
windows
android的uiautomatorviewer
ios
appium inspector
android
driver
分支主题
分支主题
分支主题
xpath
分支主题
分支主题
备注
优先级从高到低是:id->name->xpath
(1)当元素具有id属性时,优先使用id定位;因为id 定位具有唯一性。例如:网易云相册的用户名框和密码框都用id 定位。
(2)当元素不具有id属性,但在uiautomatorviewer界面存在text 值时,使用name 属性定位例如:立即登录按钮、立即注册按钮可使用name 属性定位。
(3)当元素不具备id 属性和name 属性时,使用xpath 可以进行模糊定位或者精确定位,因为页面节点可能会变动,所以xpath 不能保证100% 能定位到元素。
ios
分支主题
分支主题
元素操作
元素对象
edittext(红)
button(绿色)
text(忘记密码)
分支主题
点击
分支主题
输入
分支主题
拖动
分支主题
driver.swipe(起始点坐标,结束点坐标,步长)
举例
Appium进阶
元素集合定位
概念
某一类型元素的集合
list对象
来源
控件复用(id相同)
相同的控件类型
取名重复
语法
分支主题
举例
分支主题
坐标定位
语法
fingers次数
xy坐标
duration点击时间
举例
分支主题
元素定位的优先级
android
分支主题
ios
分支主题
id、name,xpath
元素集合(findelements)、class,坐标
等待操作
线程休眠
Thread.sleep
分支主题
显示等待(一般使用这个)
针对单一元素有效
分支主题
分支主题
隐式等待
全局操作,对所有元素操作都有效
分支主题
总结
应用类
应用启动、跳转
网络操作类
获取网络数据、下载上传,登录
读写文件类
整理数据、打开本地视频
app本身的等待类
app中本身的各种等待提示框
如果测试步骤中的下一步操作会有一定的延时,那么都应该加入等待操作
双指操作
分支主题
分支主题
手势操作
分支主题
创建touchaction对象
分支主题
分支主题
手势解锁
分支主题
分支主题
其他操作
分支主题
ios/android特性
android平台特性
操作系统开放
多任务系统
java语言
UIAutomator
ios平台特性
操作系统封闭
沙盒系统
OC语言
UIAutomation
appium平台特性
服务关键字的差异
分支主题
分支主题
分支主题
分支主题
分支主题
特有的API
启动activity
分支主题
参数:包名,activity名
打开通知栏
分支主题
实战
自动化用例设计
测试数据准备
测试代码和测试数据隔离
@DataProvide
测试数据的清理
@AfterMethod
恰当的组织测试用例
前一个用例为后一个用例创造前提和准备数据
用例组织
移动端测试的入口唯一、
页面之间的层次分明
自动化测试运行效率较低
应用重置的时间开销大
尽量在单次重置时运行多个用例
分支主题
重置应用
设置方法
appium GUI设置中noReset fullReset
命令行中启动Appium中设置服务关键字noReset fullReset属性
driver.resetApp();
重置时机
测试初次安装的功能
消除以前测试数据的影响
结果验证-唯一性
TestNG
用例组织
@Test、@BeforeClass
结果验证
Assert
数据驱动
@DataProvide
实际测试中常见问题
android不同sdk版本
高于leverl17 UIautomator
低于level17Seledroid
使用服务关键字
automationName
值为Selendroid
ios应用的测试准备
ios模拟器测试
ios真机测试
注册为开发机的真机
开发者证书编译的ipa或apk包
webview混合应用测试
快速变更的页面
排版格式丰富的页面
分支主题
常见问题处理
元素定位找不到
执行过程中健壮性不足
网络异常导致出现错误
测试执行时间较长
日常应用
测试场景
兼容性测试
回归测试
脚本编写、脚本录制
顺序执行、并发测试
0 条评论
下一页
为你推荐
查看更多