Appium IOS 自己主动化測试初探
手机平台的自己主动化測试工具非常多,之前研究过了安卓和苹果的原生自己主动化測试框架。经一些同事介绍,貌似Appium是个不错的工具。
想记录一下研究的结果,也算是篇干货的文章
在网上也看了一些视频。个人觉得这个自己主动化測试的特点就是
1. 多编程语言支持
相对于传统的IOS UIautomation仅仅能支持js语言,Appium起到了一个翻译的作用,它事实上是一个CS架构。server和IOS模拟器或真机直接通讯,client和server之间用HTTP协议进行交互,所以client用什么语言事实上不重要。以下会有一个python编程的实际样例。
2. 远程測试支持
正如上面说的,client和server之间用HTTP协议通讯。那么也就是说,client能够和server在同一台机器或者不同的机器。
3. 较好的录制功能
Appium提供了一个非常好的录制工具。能够让程序猿一步一步的把步骤进行精确的录制
4. 单步调试
程序猿能够利用高级脚本语言。比方Python对被測程序进行单步调试,比方一条命令相应一个UI动作
怎样使用appium,基于2014年5月份公布的appium 1.0来说,大约是这种,
你必需要有xcode进行自己主动化測试的基础,假设没有的话,请先补习
A. 假设是模拟器測试
1. 选择应用安装包的位置
2. 再选择期望的模拟器平台,IOS版本号,再点Launch就能够了
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc291bGVyeQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3. Launch之后会发现什么都没有,事实上Appium已经执行了。请注意执行的窗体中有没有错误
4. 以下就是录測试用例,点击一个蓝色的底,白色的i的button
5. 过一段时间后就会出现inspector的窗体
6. 以下是一个样例,比方我要点一个button,
6.1 首先如今左边的树形窗体里面找到一个button的位置,有点类似Firebug找网页控件
6.2 然后在以下的动作框选择你想要的动作,点击就是Tap,然后你会发现这个button真的被点击了(这是一个单步调试非常直观的样例)
7. 怎样把录制变成脚本
7.1 首先要点击inspector窗体的Recordbutton
7.2 选择你须要的编程语言
7.3 再继续反复你须要做的UI操作
7.4 最后就是把代码拷贝出去
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc291bGVyeQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
8. 怎样重录測试
8.1 关掉inspector。
8.2 代码须要略微的改动。Python的代码录出来竟然有语法错误,这里给个样例,对比看就好了(当然必要的python库必须安装)
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import os
import selenium success = True
desired_caps = {}
desired_caps['browserName'] = 'iOS'
desired_caps['platform'] = 'Mac'
desired_caps['version'] = '6.1'
desired_caps['device'] = 'iPad'
desired_caps['app'] = os.path.abspath('/Users/marshall/Library/Developer/Xcode/DerivedData/TestAutomation-empzzpwyyxctxidnwdsrtlssueqi/Build/Products/Debug-iphonesimulator/TestAutomation.app') wd = selenium.webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)
wd.implicitly_wait(60) def is_alert_present(wd):
try:
wd.switch_to_alert().text
return True
except:
return False try:
wd.find_element_by_name("First").click()
wd.find_element_by_name("Second").click()
finally:
wd.quit()
if not success:
raise Exception("Test failed.")
8.3 执行代码,查看測试结果
B. 假设是真机測试
真机測试事实上遇到了些问题,我大概说一下我的步骤
1. 配置应用的BundleID和设备的UDID
BundleID不知道怎么看的请用itools
UDID不知道怎么找的请用iTunes或itools
应用必须是你自己的开发人员账号签名过的
2. Launch Appium
3. 点击inspector的button,接下来应用会显示在iPad上。可是过一会就会闪退(我试了好几个应用都有这个问题),我已经给Appium报告了一个bug,看看会不会有回复吧。
假设有人在真机上成功使用inspector的。也请留言分享一下
Appium IOS 自己主动化測试初探的更多相关文章
- iOS自己主动化測试的那些干货
前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...
- MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录
这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...
- Android自己主动化測试解决方式
如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...
- Android自己主动化測试之Monkeyrunner用法及实例
眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...
- 带有机器人框架的.NET自己主动化測试
Clayton Neal在软件測试和质量保证方面有超过13年的经验,当中有八年的Windows, web,和移动应用程序的測试自己主动化经验.他在測试领域的全部等级都工作过.近期他在Bloomberg ...
- Android Monkey自己主动化測试
前言 假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题.起码能帮你省点測试的时间而且发现很多其它的问题. Monkey简单 ...
- Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)
我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...
- 基于QTP的自己主动化測试框架介绍
继前面用了七章介绍了基于QTP的自己主动化測试框架,以下再用几个视频再补充一下. 视频一:基本框架特点介绍说明 .框架的特点从正反两面进行了分析以及主要思想 http://v. ...
- Selenium2 Python 自己主动化測试实战学习笔记(五)
7.1 自己主动化測试用例 无论是功能測试.性能測试和自己主动化測试时都须要编写測试用例,測试用例的好坏能准确的体现了測试人员的经验.能力以及对项目的深度理解. 7.1.1 手工測试用例与自己主动化測 ...
随机推荐
- 洛谷P1006 传纸条 (棋盘dp)
好气,在洛谷上交就过了,在caioj上交就只有40分 之前在51nod做过这道题了. https://blog.csdn.net/qq_34416123/article/details/8180902 ...
- [HAOI2006]旅行(并查集)
寒假填坑五十道省选题——第五道 [HAOI2006]旅行 题目描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,…,N),这些景点被M条道路 ...
- 【Codeforces Round #423 (Div. 2) A】Restaurant Tables
[Link]:http://codeforces.com/contest/828/problem/A [Description] 有n个组按照时间顺序来餐馆; 每个组由一个人或两个人组成; 每当有一个 ...
- Ehcache学习总结(3)--Ehcache 整合Spring 使用页面、对象缓存
Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布式 ...
- 洛谷—— P1196 银河英雄传说
https://www.luogu.org/problem/show?pid=1196 题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始 ...
- HTML学习----------DAY2第六节
在 HTML 文档中,标题很重要. HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <h1> 定义最大的标题.<h6 ...
- hdu 1102 Constructing Roads(kruskal || prim)
求最小生成树.有一点点的变化,就是有的边已经给出来了.所以,最小生成树里面必须有这些边,kruskal和prim算法都能够,prim更简单一些.有一点须要注意,用克鲁斯卡尔算法的时候须要将已经存在的边 ...
- BZOJ2895: 球队预算
[传送门:BZOJ2895] 简要题意: 在一个篮球联赛里,有n支球队,球队的支出是和他们的胜负场次有关系的,具体来说,第i支球队的赛季总支出是Ci*x^2+Di*y^2,Di<=Ci.(赢得多 ...
- 85.explicit作用
#include <iostream> using namespace std; class myclass { public: int num; public: explicit myc ...
- 15:Challenge 11(主席树裸题)
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 262144kB 描述 给一个长为N的数列,有M次操作,每次操作是以下两种之一: (1)修改数列中的一个数 (2)求 ...