前提:搭建好robotframework环境node
RF基于python2.7的版本实现的一套开源自动化测试框架python
推荐使用Appium Desktop,android
搭建Appium环境:app
1. 搭建JDK框架
2. 搭建SDK环境;SDK:software development kit 软件包,经常使用的软件是UIAutomatorViewer,进行移动端应用的元素定位python2.7
3. 链接的移动端设备,安卓真机或者模拟器(夜神)函数
PS:安装完模拟器以后,将sdk中的adb.exe文件复制到夜神的安装路径下的nox_adb.exe,并重命名为nox_adb.exe测试
4. 安装Appium desktop,直接下载安装便可。 若是安装的是Appium server,须要配置node.js,Appium server路径到环境系统变量中ui
5. 在RobotFrameWork中导入Appium的包,实现对移动端App的自动化测试spa
启动conmand命令窗口,输入pip install robotframework-appiumlibrary
6. 启动RobotFrameWork,导入AppiumLibrary,导包时,包名大小写敏感
导入AppiumLibrary后,可能会报错,提示six not found的error,启动conmand窗口,输入 pip install six,而后重启RobotFrameWork
RobotFrameWork的工程结构:
新建Project,选择type为directory——新建Suite,选择type为file——在Suite中导入library——新建Case
RF自己是一个关键字驱动的方式来实现自动化的。
腾讯QQ的登陆demo:
1.RF链接模拟器,启动腾讯QQ
Open Application参数解析:
1.Appium服务端,链接固定
2.配置Appium的Capabilities:
deviceName 设备名称 能够经过conmand窗口输入 adb devices获取到
platformName 操做系统 Android
platformVersion 系统版本 4.4.2
appPackage 被测包名
com.lixin.yezonghui
appActivity 被测应用的主入口
.splash.SplashActivity
2. 进入QQ登陆界面
要获取元素的定位,而后基于已定位的元素进行相对于的操做。
文件1地址:/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-driver/lib/android-helpers.js
注释掉:await helpers.pushSettingsApp(adb);
注释掉:await helpers.pushUnlock(adb);
文件2地址:
/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-driver/build/lib/android-helpers.js
注释掉:return _regeneratorRuntime.awrap(helpers.pushSettingsApp(adb));
新增:return context$1$0.abrupt('return', defaultIME);
注释掉:return _regeneratorRuntime.awrap(helpers.pushUnlock(adb));
新增:return context$1$0.abrupt('return', defaultIME);
重启appium
Appium Setting和Unlock在测试过程当中不要轻易去掉。
虽然AppiumSetting不知道作什么用的,可是Unlock在手机锁屏的状况下会有解锁的效果。若是没有Unlock,锁屏状态下client会启动失败,而有Unlock时会自动解锁,而后执行下一步
若是有谁知道Appium Setting是作什么的,但愿你们给科普一下~
关键字 |
含义 |
实例 |
备注 |
Click button |
点击按钮 |
Click button 登陆 |
这里的登陆是class属性,必须是button |
Click element |
点击元素 |
Click element [locator] |
Locator能够是resource-id,也能够是xpath,但必须是当前页面惟一存在的,通常用该关键字能够完成全部元素点击 |
Click text |
点击文字 |
Click text 个人 |
个人须要是当前页面惟一存在的 |
Input text |
在指定元素中输入文本 |
Input text [locator] 111 |
Locator能够是resource-id,也能够是xpath |
Swipe |
滑动屏幕 |
Swipe 1000 1800 100 1800
|
|
Get Text |
获取某标签内容 |
${account} Get Text [locator] |
获取内容后存储到指定变量中,从而在后续脚本中调用该内容 |
2、校验函数
关键字 |
含义 |
实例 |
备注 |
Element Name Should Be |
检查元素的name属性 |
Element Name Should Be [locator] 登陆 |
locator能够是resource-id,也能够是xpath |
Element Should Be Enabled |
检查元素是否可用/可见 |
Element Should Be Enabled [locator] |
|
Page Should Contain Element |
检查界面包含某些元素 |
Page Should Contain Element [locator] |
|
Page Should Contain Text |
检查界面包含某些文字信息 |
Page Should Contain Text 预定挂号 |
|
Page Should Not Contain Element |
检查界面不包含某些元素 |
Page Should Not Contain Element [locator] |
|
Page Should Not Contain Text |
检查界面不包含某些文字信息 |
Page Should Not Contain Text 预定挂号 |
|
3、等待函数
关键字 |
含义 |
实例 |
备注 |
Wait Until Page Contains |
等待直到界面中包含某些文字,才进行下一步 |
Wait Until Page Contains 预定挂号 |
默认等待时间为5s |
Wait Until Page Contains Element |
等待直到界面中包含某些元素,才进行下一步 |
Wait Until Page Contains Element [locator] |
locator能够是resource-id,也能够是xpath |
Wait Until Page Does Not Contain |
等待直到界面中不包含某些文字,才进行下一步 |
Wait Until Page Does Not Contain 预定挂号 |
|
Wait Until Page Does Not Contain Element |
等待直到界面中不包含某些元素,才进行下一步 |
Wait Until Page Does Not Contain Element [locator] |