Appium+RobotFrameWork测试环境搭建
前提:搭建好robotframework环境
RF基于python2.7的版本实现的一套开源自动化测试框架
推荐使用Appium Desktop,
搭建Appium环境:
1. 搭建JDK
2. 搭建SDK环境;SDK:software development kit 软件包,常用的软件是UIAutomatorViewer,进行移动端应用的元素定位
3. 连接的移动端设备,安卓真机或者模拟器(夜神)
PS:安装完模拟器之后,将sdk中的adb.exe文件复制到夜神的安装路径下的nox_adb.exe,并重命名为nox_adb.exe
4. 安装Appium desktop,直接下载安装即可。 如果安装的是Appium server,需要配置node.js,Appium server路径到环境系统变量中
5. 在RobotFrameWork中导入Appium的包,实现对移动端App的自动化测试
启动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登录界面
要获取元素的定位,然后基于已定位的元素进行相对于的操作。
Appium1.6.3(客户端版)解决每次运行都需要安装Unlock以及AppiumSetting的问题
文件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是做什么的,希望大家给科普一下~
AppiumLibrary常用关键字
|
关键字 |
含义 |
实例 |
备注 |
|
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} |
获取内容后存储到指定变量中,从而在后续脚本中调用该内容 |
二、校验函数
|
关键字 |
含义 |
实例 |
备注 |
|
Element |
检查元素的name属性 |
Element |
locator可以是resource-id,也可以是xpath |
|
Element |
检查元素是否可用/可见 |
Element |
|
|
Page |
检查界面包含某些元素 |
Page |
|
|
Page |
检查界面包含某些文字信息 |
Page |
|
|
Page |
检查界面不包含某些元素 |
Page |
|
|
Page |
检查界面不包含某些文字信息 |
Page |
三、等待函数
|
关键字 |
含义 |
实例 |
备注 |
|
Wait Until |
等待直到界面中包含某些文字,才进行下一步 |
Wait Until |
默认等待时间为5s |
|
Wait Until |
等待直到界面中包含某些元素,才进行下一步 |
Wait Until |
locator可以是resource-id,也可以是xpath |
|
Wait Until |
等待直到界面中不包含某些文字,才进行下一步 |
Wait Until |
|
|
Wait Until |
等待直到界面中不包含某些元素,才进行下一步 |
Wait Until |
Appium+RobotFrameWork测试环境搭建的更多相关文章
- RobotFramework测试环境搭建记录
Robotframwork测试环境搭建记录 1.安装Python2.7(https://www.python.org/) 在环境变量path中加入“C:\Python27” 安装后的验证方法为在命令行 ...
- Appium Python测试环境搭建
详细参考地址:https://www.cnblogs.com/amoyshmily/p/10500687.html 1,Appium安装:https://github.com/appium/appiu ...
- 【转2】Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结
Appium 1.6.3 在Xcode 8 (真机)测试环境搭建经验总结 关于 Appium 1.6.3 在Xcode 8, 1真机上环境搭建问题更多,写此文章,供大家参考,让大家少走弯路. 在开始i ...
- 【转1】Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结
Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结 关于 Appium 1.6.3 在Xcode 8, 10.2 的iOS模拟器上的问题很多,本人也差点放弃 ...
- 『与善仁』Appium基础 — 14、Appium测试环境搭建
目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...
- 『与善仁』Appium基础 — 1、Android系统的测试环境搭建
目录 1.Android操作系统简介 (1)Android系统诞生 (2)Android系统的结构 (3)Android测试环境搭建整体思路 2.Java环境安装 (1)JDK8下载 (2)安装JDK ...
- Linux测试环境搭建的学习建议
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...
- 总结Selenium自动化测试方法(二)测试环境搭建
(接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
一:什么是https SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安 ...
- 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security Socket Layer)全称 ...
随机推荐
- 拜占庭将军问题与CAP
1.拜占庭将军问题 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都.由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息.在战争的时候,拜占庭军 ...
- C++中进程间相互通信的方法
详细资料查看https://www.cnblogs.com/swunield/articles/3893250.html 在我看来主要分方式就是 1.共享内存 2.postmessage发送出去 3. ...
- Spring AOP与AspectJ的对比及应用
1 简介 AOP,即面向切面编程是很常用的技术,特别是在Java Web开发中.而最流行的AOP框架分别是Spring AOP和AspectJ. 2 Spring AOP vs AspectJ Spr ...
- Python内置对象(一)
Python内置对象(一) 分多次讲解 这部分相对比较简单,偶尔一些特殊的做法会强调下(前面加★) 总览 builtins = [_ for _ in dir(__builtins__) if not ...
- 【学习日志】MySQL分表与索引的关系
什么情况下需要分表呢?分表又能解决什么问题呢? 一般情况下分表的直接原因是数据量太大了,比如一张表一共只有1w条数据,确实没必要分表.为什么数据量大了就需要分表呢?首先得看看数量量过大后会带来什么问题 ...
- Redis避坑指南:为什么要有分布式锁?
作者:京东保险 张江涛 1.为什么要有分布式锁? JUC提供的锁机制,可以保证在同一个JVM进程中同一时刻只有一个线程执行操作逻辑: 多服务多节点的情况下,就意味着有多个JVM进程,要做到这样,就需要 ...
- 学习Java Day7
今天学习了if语句和C/C++基本无差异,也再次练了一下Java的输入
- 罗姆BU32107EFV缩写词
ADC Analog-to-Digital Converter Att Attenuation 衰减 AMix Analog Mixing AVol Analog Volume BPF Band-Pa ...
- 【CTO变形记】整体系统思维-从现象到本质
前言:我们的⼤脑⾥的认知不是⼀块⽩板,⽽是写满着密密麻麻对这个世界形成的各种观念.信念.塞满了对事物的各个表象,我们脑中的表象世界,对应着外部世界的各种事物. 如果感觉本篇看起来有点不适应,可以看看之 ...
- centos7 ssh服务
转载博客园: Centos7开启SSH服务 - KinwingHU - 博客园 (cnblogs.com)