SEAndroid 介绍及其基本实现原理

手机平台的自动化测试工具很多,之前研究过了安卓和苹果的原生自动化测试框架,经一些同事介绍,貌似Appium是个不错的工具。

想记录一下研究的结果,也算是篇干货的文章

在网上也看了一些视频,个人认为这个自动化测试的特点就是


1. 多编程语言支持

相对于传统的IOS UIautomation只能支持js语言,Appium起到了一个翻译的作用,它其实是一个CS架构,服务器和IOS模拟器或真机直接通讯,客户端和服务器之间用HTTP协议进行交互,所以客户端用什么语言其实不重要。下面会有一个python编程的实际例子。


2. 远程测试支持

正如上面说的,客户端和服务器之间用HTTP协议通讯,那么也就是说,客户端可以和服务器在同一台机器或者不同的机器。


3. 较好的录制功能

Appium提供了一个很好的录制工具,可以让程序员一步一步的把步骤进行精确的录制


4. 单步调试

程序员可以利用高级脚本语言,比如Python对被测程序进行单步调试,比如一条命令对应一个UI动作


如何使用appium,基于2014年5月份发布的appium 1.0来说,大约是这样的,

你必须要有xcode进行自动化测试的基础,如果没有的话,请先补习


A. 如果是模拟器测试

1. 选择应用安装包的位置

2. 再选择期望的模拟器平台,IOS版本,再点Launch就可以了

SEAndroid 介绍及其基本实现原理

SEAndroid 介绍及其基本实现原理

3. Launch之后会发现什么都没有,其实Appium已经运行了,请注意运行的窗口中有没有错误

4. 下面就是录测试用例,点击一个蓝色的底,白色的i的按钮

5. 过一段时间后就会出现inspector的窗口

SEAndroid 介绍及其基本实现原理

SEAndroid 介绍及其基本实现原理

6. 下面是一个例子,比如我要点一个按钮,

     6.1 首先现在左边的树形窗口里面找到一个按钮的位置,有点类似Firebug找网页控件

     6.2 然后在下面的动作框选择你想要的动作,点击就是Tap,然后你会发现这个按钮真的被点击了(这是一个单步调试很直观的例子)

SEAndroid 介绍及其基本实现原理

SEAndroid 介绍及其基本实现原理

7. 如何把录制变成脚本

7.1 首先要点击inspector窗口的Record按钮

7.2 选择你需要的编程语言

7.3 再继续重复你需要做的UI操作

7.4 最后就是把代码拷贝出去

SEAndroid 介绍及其基本实现原理

SEAndroid 介绍及其基本实现原理

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

SEAndroid 介绍及其基本实现原理

SEAndroid 介绍及其基本实现原理

BundleID不知道怎么看的请用itools

UDID不知道怎么找的请用iTunes或itools

应用必须是你自己的开发者账号签名过的


2. Launch Appium


3. 点击inspector的按钮,接下来应用会显示在iPad上,但是过一会就会闪退(我试了好几个应用都有这个问题),我已经给Appium报告了一个bug,看看会不会有回复吧。

如果有人在真机上成功使用inspector的,也请留言分享一下



SEAndroid 介绍及其基本实现原理,布布扣,bubuko.com

SEAndroid 介绍及其基本实现原理

上一篇:IOS常见错误分析解决(一直更新) 你值得收藏-综合贴


下一篇:Android 新浪博客分享问题总结