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
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
无需修改被测应用
移动自动化接口一样
支持多个开发语言
背景介绍
环境搭建
android
eclipse和java
ADT、SDK
模拟器(可选)
Appium图形化界面
ios
OS X Yosemite(10.10.3)
Xcode(6.4.6E35b)
command line tools
Appium基础
session创建
引入
手机设备
操作系统、版本、手机串号
被测应用
应用包名(apk还是ipa包)、包路径
appium的session和服务关键字
服务关键字的配置
platformName-手机操作系统的的类型
platformVersion-手机操作系统的版本
UDID-手机的deviceID
deviceName-使用的手机名字
支持真机和模拟器
被测APP
路径
本地的绝对路径,或者远程服务器上的地址
ipa或apk,或者前两者的压缩包.zip
总结
创建session
基本语法
元素定位
查看控件元素的工具
windows
android的uiautomatorviewer
appium inspector
driver
备注
优先级从高到低是:id->name->xpath
(1)当元素具有id属性时,优先使用id定位;因为id 定位具有唯一性。例如:网易云相册的用户名框和密码框都用id 定位。
(2)当元素不具有id属性,但在uiautomatorviewer界面存在text 值时,使用name 属性定位例如:立即登录按钮、立即注册按钮可使用name 属性定位。
(3)当元素不具备id 属性和name 属性时,使用xpath 可以进行模糊定位或者精确定位,因为页面节点可能会变动,所以xpath 不能保证100% 能定位到元素。
元素操作
元素对象
edittext(红)
button(绿色)
text(忘记密码)
点击
输入
拖动
driver.swipe(起始点坐标,结束点坐标,步长)
Appium进阶
元素集合定位
某一类型元素的集合
list对象
来源
控件复用(id相同)
相同的控件类型
取名重复
坐标定位
fingers次数
xy坐标
duration点击时间
元素定位的优先级
元素集合(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
数据驱动
实际测试中常见问题
android不同sdk版本
高于leverl17 UIautomator
低于level17Seledroid
使用服务关键字
automationName
值为Selendroid
ios应用的测试准备
ios模拟器测试
ios真机测试
注册为开发机的真机
开发者证书编译的ipa或apk包
webview混合应用测试
快速变更的页面
排版格式丰富的页面
常见问题处理
元素定位找不到
执行过程中健壮性不足
网络异常导致出现错误
测试执行时间较长
日常应用
测试场景
脚本编写、脚本录制
顺序执行、并发测试
web/app自动化
0 条评论
回复 删除
下一页